{
  "project_id": "003-Nha-Han-202-TCN-220",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/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/003-Nha-Han-202-TCN-220/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/003-Nha-Han-202-TCN-220/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1947.000000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1946.491000"
        }
      ],
      "format": {
        "duration": "1947.000000"
      }
    },
    "ffmpeg_tail": "153 q=13.0 size= 1976064kB time=00:31:10.08 bitrate=8656.3kbits/s dup=1 drop=0 speed=5.11x    \nframe=56211 fps=154 q=18.0 size= 1979904kB time=00:31:13.66 bitrate=8656.5kbits/s dup=1 drop=0 speed=5.12x    \nframe=56337 fps=154 q=17.0 size= 1986560kB time=00:31:17.84 bitrate=8666.3kbits/s dup=1 drop=0 speed=5.12x    \nframe=56468 fps=154 q=16.0 size= 1990400kB time=00:31:22.19 bitrate=8662.9kbits/s dup=1 drop=0 speed=5.13x    \nframe=56620 fps=154 q=14.0 size= 1994752kB time=00:31:27.23 bitrate=8658.7kbits/s dup=1 drop=0 speed=5.13x    \nframe=56741 fps=154 q=16.0 size= 1998080kB time=00:31:31.28 bitrate=8654.6kbits/s dup=1 drop=0 speed=5.14x    \nframe=56874 fps=154 q=14.0 size= 2002176kB time=00:31:35.76 bitrate=8651.8kbits/s dup=1 drop=0 speed=5.14x    \nframe=56989 fps=154 q=16.0 size= 2004992kB time=00:31:39.56 bitrate=8646.7kbits/s dup=1 drop=0 speed=5.15x    \nframe=57011 fps=154 q=16.0 size= 2005504kB time=00:31:40.28 bitrate=8645.6kbits/s dup=1 drop=0 speed=5.14x    \nframe=57051 fps=154 q=16.0 size= 2007040kB time=00:31:41.65 bitrate=8646.0kbits/s dup=1 drop=0 speed=5.14x    \nframe=57178 fps=154 q=17.0 size= 2012928kB time=00:31:45.83 bitrate=8652.3kbits/s dup=1 drop=0 speed=5.14x    \nframe=57311 fps=154 q=16.0 size= 2019072kB time=00:31:50.27 bitrate=8658.6kbits/s dup=1 drop=0 speed=5.15x    \nframe=57423 fps=154 q=15.0 size= 2019584kB time=00:31:54.02 bitrate=8643.8kbits/s dup=1 drop=0 speed=5.15x    \nframe=57549 fps=155 q=15.0 size= 2020608kB time=00:31:58.20 bitrate=8629.3kbits/s dup=1 drop=0 speed=5.15x    \nframe=57690 fps=155 q=15.0 size= 2020864kB time=00:32:02.73 bitrate=8610.1kbits/s dup=1 drop=0 speed=5.16x    \nframe=57836 fps=155 q=15.0 size= 2021120kB time=00:32:07.59 bitrate=8589.5kbits/s dup=1 drop=0 speed=5.17x    \nframe=57855 fps=155 q=15.0 size= 2021120kB time=00:32:08.23 bitrate=8586.6kbits/s dup=1 drop=0 speed=5.16x    \nframe=57874 fps=155 q=13.0 size= 2021120kB time=00:32:08.91 bitrate=8583.6kbits/s dup=1 drop=0 speed=5.15x    \nframe=57891 fps=154 q=15.0 size= 2021120kB time=00:32:09.42 bitrate=8581.3kbits/s dup=1 drop=0 speed=5.15x    \nframe=57906 fps=154 q=13.0 size= 2021120kB time=00:32:09.94 bitrate=8579.0kbits/s dup=1 drop=0 speed=5.14x    \nframe=57923 fps=154 q=15.0 size= 2021376kB time=00:32:10.49 bitrate=8577.6kbits/s dup=1 drop=0 speed=5.14x    \nframe=57941 fps=154 q=15.0 size= 2021376kB time=00:32:11.09 bitrate=8575.0kbits/s dup=1 drop=0 speed=5.13x    \nframe=57960 fps=154 q=15.0 size= 2021376kB time=00:32:11.73 bitrate=8572.2kbits/s dup=1 drop=0 speed=5.13x    \nframe=57978 fps=154 q=13.0 size= 2021376kB time=00:32:12.33 bitrate=8569.5kbits/s dup=1 drop=0 speed=5.12x    \nframe=58099 fps=154 q=15.0 size= 2021632kB time=00:32:16.38 bitrate=8552.6kbits/s dup=1 drop=0 speed=5.13x    \nframe=58239 fps=154 q=15.0 size= 2021632kB time=00:32:21.03 bitrate=8532.2kbits/s dup=1 drop=0 speed=5.13x    \nframe=58275 fps=154 q=15.0 size= 2021888kB time=00:32:22.22 bitrate=8528.0kbits/s dup=1 drop=0 speed=5.13x    \nframe=58293 fps=154 q=15.0 size= 2021888kB time=00:32:22.82 bitrate=8525.4kbits/s dup=1 drop=0 speed=5.12x    \nframe=58312 fps=154 q=15.0 size= 2021888kB time=00:32:23.46 bitrate=8522.6kbits/s dup=1 drop=0 speed=5.12x    \nframe=58334 fps=153 q=13.0 size= 2021888kB time=00:32:24.19 bitrate=8519.4kbits/s dup=1 drop=0 speed=5.11x    \nframe=58353 fps=153 q=15.0 size= 2021888kB time=00:32:24.83 bitrate=8516.6kbits/s dup=1 drop=0 speed=5.11x    \nframe=58369 fps=153 q=15.0 size= 2021888kB time=00:32:25.38 bitrate=8514.1kbits/s dup=1 drop=0 speed= 5.1x    \nframe=58385 fps=153 q=15.0 size= 2021888kB time=00:32:25.89 bitrate=8511.9kbits/s dup=1 drop=0 speed= 5.1x    \n[mp4 @ 0x64bac15ad640] Starting second pass: moving the moov atom to the beginning of the file\nframe=58410 fps=152 q=15.0 Lsize= 2023350kB time=00:32:26.86 bitrate=8513.8kbits/s dup=1 drop=0 speed=5.06x    \nvideo:1997779kB audio:24279kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.063929%\n[aac @ 0x64bac1968300] Qavg: 65484.219\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": "16.966667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.950023"
        }
      ],
      "format": {
        "duration": "16.967000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1903.269661"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1902.810431"
        }
      ],
      "format": {
        "duration": "1903.317000"
      }
    },
    "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": "1947.000000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1946.491000"
      }
    ],
    "format": {
      "duration": "1947.000000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1947.018,
    "final_duration_sec": 1947.0,
    "duration_diff_sec": -0.018000000000029104,
    "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."
  ]
}