{
  "project_id": "30052026-001-Mac-Dinh-Chi",
  "step": 18,
  "status": "completed",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/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/30052026-001-Mac-Dinh-Chi/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/30052026-001-Mac-Dinh-Chi/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "608.400000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "608.242000"
        }
      ],
      "format": {
        "duration": "608.400000"
      }
    },
    "ffmpeg_tail": "0:08:54.64 bitrate=2655.5kbits/s dup=1 drop=0 speed= 5.3x    \nframe=16157 fps=159 q=26.0 size=  173824kB time=00:08:58.52 bitrate=2644.2kbits/s dup=1 drop=0 speed=5.31x    \nframe=16274 fps=160 q=26.0 size=  174336kB time=00:09:02.40 bitrate=2633.0kbits/s dup=1 drop=0 speed=5.32x    \nframe=16355 fps=160 q=26.0 size=  175104kB time=00:09:05.09 bitrate=2631.6kbits/s dup=1 drop=0 speed=5.32x    \nframe=16432 fps=160 q=26.0 size=  175872kB time=00:09:07.69 bitrate=2630.5kbits/s dup=1 drop=0 speed=5.32x    \nframe=16504 fps=160 q=26.0 size=  176640kB time=00:09:10.04 bitrate=2630.8kbits/s dup=1 drop=0 speed=5.32x    \nframe=16580 fps=160 q=26.0 size=  177152kB time=00:09:12.60 bitrate=2626.2kbits/s dup=1 drop=0 speed=5.32x    \nframe=16658 fps=159 q=26.0 size=  177664kB time=00:09:15.25 bitrate=2621.2kbits/s dup=1 drop=0 speed=5.32x    \nframe=16724 fps=159 q=26.0 size=  179200kB time=00:09:17.38 bitrate=2633.7kbits/s dup=1 drop=0 speed=5.31x    \nframe=16796 fps=159 q=26.0 size=  179968kB time=00:09:19.77 bitrate=2633.7kbits/s dup=1 drop=0 speed=5.31x    \nframe=16862 fps=159 q=26.0 size=  180736kB time=00:09:21.99 bitrate=2634.5kbits/s dup=1 drop=0 speed= 5.3x    \nframe=16937 fps=159 q=23.0 size=  181760kB time=00:09:24.46 bitrate=2637.8kbits/s dup=1 drop=0 speed= 5.3x    \nframe=17016 fps=159 q=26.0 size=  182784kB time=00:09:27.11 bitrate=2640.3kbits/s dup=1 drop=0 speed= 5.3x    \nframe=17083 fps=159 q=26.0 size=  184064kB time=00:09:29.33 bitrate=2648.5kbits/s dup=1 drop=0 speed= 5.3x    \nframe=17159 fps=159 q=26.0 size=  184832kB time=00:09:31.89 bitrate=2647.6kbits/s dup=1 drop=0 speed= 5.3x    \nframe=17244 fps=159 q=26.0 size=  186112kB time=00:09:34.70 bitrate=2652.9kbits/s dup=1 drop=0 speed= 5.3x    \nframe=17378 fps=159 q=26.0 size=  186112kB time=00:09:39.23 bitrate=2632.2kbits/s dup=1 drop=0 speed=5.31x    \nframe=17492 fps=160 q=26.0 size=  186880kB time=00:09:43.02 bitrate=2625.8kbits/s dup=1 drop=0 speed=5.33x    \nframe=17628 fps=160 q=26.0 size=  186880kB time=00:09:47.55 bitrate=2605.6kbits/s dup=1 drop=0 speed=5.34x    \nframe=17765 fps=161 q=26.0 size=  187136kB time=00:09:52.07 bitrate=2589.2kbits/s dup=1 drop=0 speed=5.36x    \nframe=17903 fps=161 q=26.0 size=  187136kB time=00:09:56.72 bitrate=2569.1kbits/s dup=1 drop=0 speed=5.38x    \nframe=18040 fps=162 q=26.0 size=  187392kB time=00:10:01.28 bitrate=2553.0kbits/s dup=1 drop=0 speed=5.39x    \nframe=18169 fps=162 q=26.0 size=  187392kB time=00:10:05.55 bitrate=2535.1kbits/s dup=1 drop=0 speed=5.41x    \n[mp4 @ 0x5a4546c1b540] Starting second pass: moving the moov atom to the beginning of the file\nframe=18252 fps=162 q=-1.0 Lsize=  188167kB time=00:10:08.30 bitrate=2534.0kbits/s dup=1 drop=0 speed=5.41x    \nvideo:179885kB audio:7809kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.251820%\n[libx264 @ 0x5a4546c1b980] frame I:77    Avg QP:16.46  size:428469\n[libx264 @ 0x5a4546c1b980] frame P:5150  Avg QP:19.99  size: 26014\n[libx264 @ 0x5a4546c1b980] frame B:13025 Avg QP:24.32  size:  1323\n[libx264 @ 0x5a4546c1b980] consecutive B-frames:  2.9%  4.8%  3.1% 89.2%\n[libx264 @ 0x5a4546c1b980] mb I  I16..4:  5.8%  3.5% 90.7%\n[libx264 @ 0x5a4546c1b980] mb P  I16..4:  0.1%  0.8%  1.0%  P16..4: 40.1%  8.5%  7.0%  0.0%  0.0%    skip:42.6%\n[libx264 @ 0x5a4546c1b980] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  7.4%  1.2%  0.1%  direct: 0.8%  skip:90.4%  L0:38.2% L1:43.1% BI:18.7%\n[libx264 @ 0x5a4546c1b980] 8x8 transform intra:25.2% inter:60.4%\n[libx264 @ 0x5a4546c1b980] coded y,uvDC,uvAC intra: 95.8% 64.7% 32.9% inter: 6.1% 3.8% 0.1%\n[libx264 @ 0x5a4546c1b980] i16 v,h,dc,p: 59%  5% 30%  7%\n[libx264 @ 0x5a4546c1b980] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 13% 21%  7%  8%  7%  7%  8% 10%\n[libx264 @ 0x5a4546c1b980] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 14% 12%  9% 11%  9% 10%  9% 11%\n[libx264 @ 0x5a4546c1b980] i8c dc,h,v,p: 49% 23% 23%  6%\n[libx264 @ 0x5a4546c1b980] Weighted P-Frames: Y:7.1% UV:3.1%\n[libx264 @ 0x5a4546c1b980] kb/s:2422.11\n[aac @ 0x5a4546ba6c40] Qavg: 65515.141\n",
    "method": "explicit_ffmpeg_audio_safe",
    "sample_rate": 24000,
    "channels": 1,
    "bgm_volume": 0.2
  },
  "input_probes": {
    "intro": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "16.066667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.060000"
        }
      ],
      "format": {
        "duration": "16.067000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "565.467969"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "565.434422"
        }
      ],
      "format": {
        "duration": "565.615000"
      }
    },
    "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": "608.400000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "608.242000"
      }
    ],
    "format": {
      "duration": "608.400000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": true,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 608.416,
    "final_duration_sec": 608.4,
    "duration_diff_sec": -0.016000000000076398,
    "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."
  ]
}