{
  "project_id": "002-Nha-Tan-221-207-TCN",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/main_story_qa_report.json",
    "outro_video_path": "/data/video-pipeline/Youtube-Video-Maker/data/outtro/outtro1_1080p.mp4",
    "bgm_audio_path": "/data/video-pipeline/Youtube-Video-Maker/data/music/the_mountain-history-archive-145197/the_mountain-history-archive-145197.mp3",
    "thumbnail_16x9_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/002-Nha-Tan-221-207-TCN/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1529.066667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1528.603000"
        }
      ],
      "format": {
        "duration": "1529.067000"
      }
    },
    "ffmpeg_tail": "296 q=15.0 size= 1375744kB time=00:22:40.76 bitrate=8282.2kbits/s dup=1 drop=0 speed=9.88x    \nframe=40990 fps=296 q=16.0 size= 1382144kB time=00:22:46.27 bitrate=8287.2kbits/s dup=1 drop=0 speed=9.88x    \nframe=41147 fps=297 q=16.0 size= 1389824kB time=00:22:51.47 bitrate=8301.6kbits/s dup=1 drop=0 speed=9.88x    \nframe=41307 fps=297 q=17.0 size= 1398528kB time=00:22:56.81 bitrate=8321.2kbits/s dup=1 drop=0 speed=9.89x    \nframe=41472 fps=297 q=15.0 size= 1402112kB time=00:23:02.35 bitrate=8309.1kbits/s dup=1 drop=0 speed=9.89x    \nframe=41648 fps=297 q=13.0 size= 1403136kB time=00:23:08.20 bitrate=8280.1kbits/s dup=1 drop=0 speed= 9.9x    \nframe=41794 fps=297 q=14.0 size= 1408768kB time=00:23:13.06 bitrate=8284.3kbits/s dup=1 drop=0 speed= 9.9x    \nframe=41866 fps=291 q=14.0 size= 1411840kB time=00:23:15.45 bitrate=8288.2kbits/s dup=1 drop=0 speed=9.71x    \nframe=42000 fps=291 q=17.0 size= 1417728kB time=00:23:19.93 bitrate=8296.1kbits/s dup=1 drop=0 speed=9.71x    \nframe=42160 fps=291 q=14.0 size= 1425152kB time=00:23:25.22 bitrate=8308.2kbits/s dup=1 drop=0 speed=9.71x    \nframe=42343 fps=292 q=15.0 size= 1428480kB time=00:23:31.37 bitrate=8291.3kbits/s dup=1 drop=0 speed=9.72x    \nframe=42509 fps=292 q=15.0 size= 1428992kB time=00:23:36.96 bitrate=8261.6kbits/s dup=1 drop=0 speed=9.72x    \nframe=42644 fps=291 q=14.0 size= 1434368kB time=00:23:41.39 bitrate=8266.8kbits/s dup=1 drop=0 speed=9.72x    \nframe=42809 fps=292 q=17.0 size= 1443072kB time=00:23:46.94 bitrate=8284.6kbits/s dup=1 drop=0 speed=9.72x    \nframe=42981 fps=292 q=16.0 size= 1450240kB time=00:23:52.70 bitrate=8292.3kbits/s dup=1 drop=0 speed=9.73x    \nframe=43149 fps=292 q=15.0 size= 1454336kB time=00:23:58.25 bitrate=8283.6kbits/s dup=1 drop=0 speed=9.73x    \nframe=43340 fps=292 q=15.0 size= 1458688kB time=00:24:04.60 bitrate=8271.8kbits/s dup=1 drop=0 speed=9.74x    \nframe=43473 fps=292 q=17.0 size= 1465088kB time=00:24:09.04 bitrate=8282.7kbits/s dup=1 drop=0 speed=9.74x    \nframe=43643 fps=292 q=15.0 size= 1471232kB time=00:24:14.67 bitrate=8285.2kbits/s dup=1 drop=0 speed=9.74x    \nframe=43783 fps=292 q=15.0 size= 1477632kB time=00:24:19.32 bitrate=8294.8kbits/s dup=1 drop=0 speed=9.74x    \nframe=43937 fps=292 q=15.0 size= 1480704kB time=00:24:24.53 bitrate=8282.5kbits/s dup=1 drop=0 speed=9.74x    \nframe=44093 fps=292 q=16.0 size= 1484288kB time=00:24:29.69 bitrate=8273.3kbits/s dup=1 drop=0 speed=9.75x    \nframe=44246 fps=292 q=16.0 size= 1490688kB time=00:24:34.81 bitrate=8280.2kbits/s dup=1 drop=0 speed=9.75x    \nframe=44399 fps=292 q=16.0 size= 1497344kB time=00:24:39.89 bitrate=8288.6kbits/s dup=1 drop=0 speed=9.75x    \nframe=44535 fps=292 q=19.0 size= 1504512kB time=00:24:44.41 bitrate=8302.9kbits/s dup=1 drop=0 speed=9.75x    \nframe=44682 fps=292 q=17.0 size= 1511424kB time=00:24:49.32 bitrate=8313.6kbits/s dup=1 drop=0 speed=9.75x    \nframe=44840 fps=292 q=16.0 size= 1515776kB time=00:24:54.57 bitrate=8308.2kbits/s dup=1 drop=0 speed=9.75x    \nframe=44987 fps=292 q=16.0 size= 1519360kB time=00:24:59.52 bitrate=8300.4kbits/s dup=1 drop=0 speed=9.75x    \nframe=45162 fps=293 q=15.0 size= 1522176kB time=00:25:05.19 bitrate=8284.4kbits/s dup=1 drop=0 speed=9.75x    \nframe=45338 fps=293 q=13.0 size= 1522432kB time=00:25:11.08 bitrate=8253.5kbits/s dup=1 drop=0 speed=9.76x    \nframe=45511 fps=293 q=15.0 size= 1522688kB time=00:25:16.84 bitrate=8223.6kbits/s dup=1 drop=0 speed=9.77x    \nframe=45687 fps=293 q=15.0 size= 1522944kB time=00:25:22.68 bitrate=8193.4kbits/s dup=1 drop=0 speed=9.77x    \nframe=45867 fps=293 q=15.0 size= 1523200kB time=00:25:28.49 bitrate=8163.6kbits/s dup=1 drop=0 speed=9.78x    \n[mp4 @ 0x61a28051b500] Starting second pass: moving the moov atom to the beginning of the file\nframe=45872 fps=285 q=13.0 Lsize= 1524334kB time=00:25:28.93 bitrate=8167.4kbits/s dup=1 drop=0 speed=9.49x    \nvideo:1504305kB audio:19013kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.066663%\n[aac @ 0x61a2802135c0] Qavg: 65481.945\n",
    "method": "explicit_ffmpeg_audio_safe",
    "sample_rate": 24000,
    "channels": 1,
    "bgm_volume": 0.2,
    "outro_included": true,
    "width": 1920,
    "height": 1080
  },
  "input_probes": {
    "intro": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "17.433333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "17.430023"
        }
      ],
      "format": {
        "duration": "17.434000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1484.869987"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1484.396463"
        }
      ],
      "format": {
        "duration": "1484.917000"
      }
    },
    "outro": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "26.733333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "26.709000"
        }
      ],
      "format": {
        "duration": "26.734000"
      }
    }
  },
  "final_probe": {
    "programs": [],
    "streams": [
      {
        "index": 0,
        "codec_name": "h264",
        "codec_type": "video",
        "duration": "1529.066667"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1528.603000"
      }
    ],
    "format": {
      "duration": "1529.067000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1529.0849999999998,
    "final_duration_sec": 1529.067,
    "duration_diff_sec": -0.01799999999980173,
    "duration_within_tolerance": true,
    "bgm_volume": 0.2,
    "black_event_count": 0,
    "blackdetect_clear": true
  },
  "notes": [
    "Step 18 package is not final approval; run Step 19 final QA before output/info.json approval."
  ]
}