{
  "project_id": "05062026-002-Dinh-Bo-Linh",
  "step": 18,
  "status": "completed",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/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/05062026-002-Dinh-Bo-Linh/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/05062026-002-Dinh-Bo-Linh/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "489.466667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "488.539000"
        }
      ],
      "format": {
        "duration": "489.467000"
      }
    },
    "ffmpeg_tail": "0:07:00.86 bitrate=2082.9kbits/s dup=1 drop=0 speed=5.75x    \nframe=12722 fps=173 q=26.0 size=  107520kB time=00:07:04.02 bitrate=2077.3kbits/s dup=1 drop=0 speed=5.75x    \nframe=12816 fps=173 q=26.0 size=  108288kB time=00:07:07.13 bitrate=2076.8kbits/s dup=1 drop=0 speed=5.76x    \nframe=12906 fps=173 q=26.0 size=  108800kB time=00:07:10.20 bitrate=2071.8kbits/s dup=1 drop=0 speed=5.76x    \nframe=12993 fps=173 q=26.0 size=  110080kB time=00:07:13.02 bitrate=2082.5kbits/s dup=1 drop=0 speed=5.76x    \nframe=13077 fps=173 q=26.0 size=  110848kB time=00:07:15.84 bitrate=2083.5kbits/s dup=1 drop=0 speed=5.76x    \nframe=13162 fps=173 q=26.0 size=  111616kB time=00:07:18.65 bitrate=2084.5kbits/s dup=1 drop=0 speed=5.75x    \nframe=13247 fps=173 q=26.0 size=  112896kB time=00:07:21.47 bitrate=2094.9kbits/s dup=1 drop=0 speed=5.75x    \nframe=13338 fps=173 q=26.0 size=  113664kB time=00:07:24.54 bitrate=2094.6kbits/s dup=1 drop=0 speed=5.76x    \nframe=13430 fps=173 q=26.0 size=  114176kB time=00:07:27.61 bitrate=2089.6kbits/s dup=1 drop=0 speed=5.76x    \nframe=13517 fps=173 q=26.0 size=  115200kB time=00:07:30.51 bitrate=2094.7kbits/s dup=1 drop=0 speed=5.76x    \nframe=13604 fps=173 q=26.0 size=  115968kB time=00:07:33.37 bitrate=2095.4kbits/s dup=1 drop=0 speed=5.76x    \nframe=13694 fps=173 q=26.0 size=  116992kB time=00:07:36.36 bitrate=2100.1kbits/s dup=1 drop=0 speed=5.76x    \nframe=13786 fps=173 q=26.0 size=  117760kB time=00:07:39.43 bitrate=2099.7kbits/s dup=1 drop=0 speed=5.76x    \nframe=13876 fps=173 q=26.0 size=  118528kB time=00:07:41.73 bitrate=2102.9kbits/s dup=1 drop=0 speed=5.75x    \nframe=13962 fps=173 q=26.0 size=  118784kB time=00:07:44.76 bitrate=2093.7kbits/s dup=1 drop=0 speed=5.76x    \nframe=14060 fps=173 q=26.0 size=  118784kB time=00:07:48.01 bitrate=2079.2kbits/s dup=1 drop=0 speed=5.76x    \nframe=14161 fps=173 q=26.0 size=  118784kB time=00:07:51.38 bitrate=2064.3kbits/s dup=1 drop=0 speed=5.77x    \nframe=14257 fps=173 q=26.0 size=  118784kB time=00:07:54.58 bitrate=2050.4kbits/s dup=1 drop=0 speed=5.77x    \nframe=14352 fps=173 q=26.0 size=  118784kB time=00:07:57.73 bitrate=2036.8kbits/s dup=1 drop=0 speed=5.77x    \nframe=14450 fps=174 q=26.0 size=  119040kB time=00:08:01.02 bitrate=2027.3kbits/s dup=1 drop=0 speed=5.78x    \nframe=14549 fps=174 q=26.0 size=  119040kB time=00:08:04.30 bitrate=2013.5kbits/s dup=1 drop=0 speed=5.78x    \nframe=14645 fps=174 q=26.0 size=  119040kB time=00:08:07.50 bitrate=2000.3kbits/s dup=1 drop=0 speed=5.79x    \n[mp4 @ 0x57018d25fe80] Starting second pass: moving the moov atom to the beginning of the file\nframe=14684 fps=173 q=-1.0 Lsize=  119642kB time=00:08:09.36 bitrate=2002.8kbits/s dup=1 drop=0 speed=5.77x    \nvideo:113148kB audio:6115kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.317265%\n[libx264 @ 0x57018d25ca40] frame I:62    Avg QP: 8.35  size:180757\n[libx264 @ 0x57018d25ca40] frame P:4348  Avg QP:14.78  size: 22638\n[libx264 @ 0x57018d25ca40] frame B:10274 Avg QP:18.73  size:   606\n[libx264 @ 0x57018d25ca40] consecutive B-frames:  5.8%  2.1%  1.6% 90.4%\n[libx264 @ 0x57018d25ca40] mb I  I16..4: 70.6%  1.7% 27.7%\n[libx264 @ 0x57018d25ca40] mb P  I16..4:  0.5%  0.5%  0.5%  P16..4: 18.6%  3.2%  2.3%  0.0%  0.0%    skip:74.5%\n[libx264 @ 0x57018d25ca40] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  1.9%  0.4%  0.0%  direct: 0.5%  skip:97.2%  L0:34.7% L1:42.9% BI:22.4%\n[libx264 @ 0x57018d25ca40] 8x8 transform intra:17.0% inter:49.0%\n[libx264 @ 0x57018d25ca40] coded y,uvDC,uvAC intra: 49.0% 29.6% 12.7% inter: 4.3% 1.6% 0.0%\n[libx264 @ 0x57018d25ca40] i16 v,h,dc,p: 91%  3%  4%  1%\n[libx264 @ 0x57018d25ca40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 14% 25%  7%  8%  7%  7%  8% 10%\n[libx264 @ 0x57018d25ca40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 13% 14%  9% 10%  9%  9% 10% 11%\n[libx264 @ 0x57018d25ca40] i8c dc,h,v,p: 73% 14% 10%  3%\n[libx264 @ 0x57018d25ca40] Weighted P-Frames: Y:6.5% UV:2.3%\n[libx264 @ 0x57018d25ca40] kb/s:1893.70\n[aac @ 0x57018d277cc0] Qavg: 65516.457\n",
    "method": "explicit_ffmpeg_audio_safe",
    "sample_rate": 24000,
    "channels": 1,
    "bgm_volume": 0.2,
    "outro_included": true,
    "width": 1080,
    "height": 1920
  },
  "input_probes": {
    "intro": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "17.066667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "17.070023"
        }
      ],
      "format": {
        "duration": "17.071000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "445.633984"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "444.737460"
        }
      ],
      "format": {
        "duration": "445.681000"
      }
    },
    "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": "489.466667"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "488.539000"
      }
    ],
    "format": {
      "duration": "489.467000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": true,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 489.486,
    "final_duration_sec": 489.467,
    "duration_diff_sec": -0.019000000000005457,
    "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."
  ]
}