{
  "project_id": "11062026-001-Trieu-Ngo",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/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/11062026-001-Trieu-Ngo/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/11062026-001-Trieu-Ngo/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1497.533333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1496.578000"
        }
      ],
      "format": {
        "duration": "1497.534000"
      }
    },
    "ffmpeg_tail": "24:03.92 bitrate=3474.1kbits/s dup=1 drop=0 speed=4.69x    \nframe=43383 fps=141 q=26.0 size=  613376kB time=00:24:06.01 bitrate=3474.9kbits/s dup=1 drop=0 speed=4.69x    \nframe=43449 fps=141 q=26.0 size=  614144kB time=00:24:08.19 bitrate=3474.0kbits/s dup=1 drop=0 speed=4.68x    \nframe=43508 fps=141 q=26.0 size=  614656kB time=00:24:10.19 bitrate=3472.1kbits/s dup=1 drop=0 speed=4.68x    \nframe=43569 fps=140 q=26.0 size=  615936kB time=00:24:12.20 bitrate=3474.5kbits/s dup=1 drop=0 speed=4.68x    \nframe=43630 fps=140 q=26.0 size=  616704kB time=00:24:14.25 bitrate=3474.0kbits/s dup=1 drop=0 speed=4.68x    \nframe=43692 fps=140 q=26.0 size=  617472kB time=00:24:16.29 bitrate=3473.4kbits/s dup=1 drop=0 speed=4.68x    \nframe=43744 fps=140 q=26.0 size=  618752kB time=00:24:18.04 bitrate=3476.4kbits/s dup=1 drop=0 speed=4.68x    \nframe=43798 fps=140 q=26.0 size=  619264kB time=00:24:19.88 bitrate=3474.9kbits/s dup=1 drop=0 speed=4.68x    \nframe=43852 fps=140 q=26.0 size=  620800kB time=00:24:21.63 bitrate=3479.4kbits/s dup=1 drop=0 speed=4.67x    \nframe=43902 fps=140 q=26.0 size=  621824kB time=00:24:23.29 bitrate=3481.2kbits/s dup=1 drop=0 speed=4.67x    \nframe=43955 fps=140 q=26.0 size=  622848kB time=00:24:25.08 bitrate=3482.6kbits/s dup=1 drop=0 speed=4.67x    \nframe=44010 fps=140 q=26.0 size=  624128kB time=00:24:26.92 bitrate=3485.4kbits/s dup=1 drop=0 speed=4.67x    \nframe=44069 fps=140 q=26.0 size=  624640kB time=00:24:28.88 bitrate=3483.6kbits/s dup=1 drop=0 speed=4.67x    \nframe=44123 fps=140 q=26.0 size=  625152kB time=00:24:30.63 bitrate=3482.3kbits/s dup=1 drop=0 speed=4.67x    \nframe=44210 fps=140 q=26.0 size=  625664kB time=00:24:32.98 bitrate=3479.6kbits/s dup=1 drop=0 speed=4.67x    \nframe=44298 fps=140 q=26.0 size=  625664kB time=00:24:35.92 bitrate=3472.7kbits/s dup=1 drop=0 speed=4.67x    \nframe=44385 fps=140 q=26.0 size=  625664kB time=00:24:38.82 bitrate=3465.9kbits/s dup=1 drop=0 speed=4.67x    \nframe=44473 fps=140 q=26.0 size=  625920kB time=00:24:41.77 bitrate=3460.4kbits/s dup=1 drop=0 speed=4.67x    \nframe=44562 fps=140 q=26.0 size=  625920kB time=00:24:44.71 bitrate=3453.6kbits/s dup=1 drop=0 speed=4.67x    \nframe=44652 fps=140 q=26.0 size=  625920kB time=00:24:47.74 bitrate=3446.5kbits/s dup=1 drop=0 speed=4.68x    \nframe=44745 fps=140 q=26.0 size=  626176kB time=00:24:50.81 bitrate=3440.8kbits/s dup=1 drop=0 speed=4.68x    \nframe=44838 fps=140 q=26.0 size=  626176kB time=00:24:53.93 bitrate=3433.6kbits/s dup=1 drop=0 speed=4.68x    \n[mp4 @ 0x64ddd588c380] Starting second pass: moving the moov atom to the beginning of the file\nframe=44926 fps=140 q=-1.0 Lsize=  627582kB time=00:24:57.43 bitrate=3433.3kbits/s dup=1 drop=0 speed=4.68x    \nvideo:606892kB audio:19535kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.184333%\n[libx264 @ 0x64ddd5876100] frame I:187   Avg QP:17.06  size:441231\n[libx264 @ 0x64ddd5876100] frame P:13308 Avg QP:20.72  size: 35940\n[libx264 @ 0x64ddd5876100] frame B:31431 Avg QP:25.10  size:  1930\n[libx264 @ 0x64ddd5876100] consecutive B-frames:  5.0%  4.2%  2.9% 87.9%\n[libx264 @ 0x64ddd5876100] mb I  I16..4:  2.5%  3.9% 93.6%\n[libx264 @ 0x64ddd5876100] mb P  I16..4:  0.1%  1.0%  1.0%  P16..4: 49.2% 10.8%  9.2%  0.0%  0.0%    skip:28.8%\n[libx264 @ 0x64ddd5876100] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 10.6%  1.9%  0.2%  direct: 1.1%  skip:86.3%  L0:36.9% L1:41.1% BI:22.0%\n[libx264 @ 0x64ddd5876100] 8x8 transform intra:29.8% inter:59.8%\n[libx264 @ 0x64ddd5876100] coded y,uvDC,uvAC intra: 97.0% 59.0% 26.8% inter: 9.1% 4.3% 0.1%\n[libx264 @ 0x64ddd5876100] i16 v,h,dc,p: 31%  6% 52% 11%\n[libx264 @ 0x64ddd5876100] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 14% 24%  7%  8%  6%  8%  7% 11%\n[libx264 @ 0x64ddd5876100] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 15% 12%  9% 11%  9% 10%  9% 11%\n[libx264 @ 0x64ddd5876100] i8c dc,h,v,p: 52% 24% 20%  5%\n[libx264 @ 0x64ddd5876100] Weighted P-Frames: Y:11.1% UV:2.3%\n[libx264 @ 0x64ddd5876100] kb/s:3319.90\n[aac @ 0x64ddd588e780] Qavg: 65514.375\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.433333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.430023"
        }
      ],
      "format": {
        "duration": "16.434000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1454.336979"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1453.406440"
        }
      ],
      "format": {
        "duration": "1454.384000"
      }
    },
    "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": "1497.533333"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1496.578000"
      }
    ],
    "format": {
      "duration": "1497.534000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1497.552,
    "final_duration_sec": 1497.534,
    "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."
  ]
}