{
  "project_id": "29052026-001-Nguyen-Phi-Y-Lan",
  "step": 18,
  "status": "completed",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/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/29052026-001-Nguyen-Phi-Y-Lan/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/29052026-001-Nguyen-Phi-Y-Lan/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1203.100000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1203.125000"
        }
      ],
      "format": {
        "duration": "1203.125000"
      }
    },
    "ffmpeg_tail": ":18:56.52 bitrate=3040.9kbits/s dup=1 drop=0 speed=4.84x    \nframe=34170 fps=145 q=26.0 size=  422912kB time=00:18:58.95 bitrate=3041.8kbits/s dup=1 drop=0 speed=4.84x    \nframe=34242 fps=145 q=26.0 size=  423168kB time=00:19:01.30 bitrate=3037.4kbits/s dup=1 drop=0 speed=4.84x    \nframe=34317 fps=145 q=26.0 size=  424704kB time=00:19:03.86 bitrate=3041.6kbits/s dup=1 drop=0 speed=4.84x    \nframe=34393 fps=145 q=26.0 size=  425472kB time=00:19:06.34 bitrate=3040.5kbits/s dup=1 drop=0 speed=4.84x    \nframe=34477 fps=145 q=26.0 size=  426496kB time=00:19:09.19 bitrate=3040.3kbits/s dup=1 drop=0 speed=4.84x    \nframe=34550 fps=145 q=26.0 size=  427520kB time=00:19:11.58 bitrate=3041.2kbits/s dup=1 drop=0 speed=4.84x    \nframe=34625 fps=145 q=26.0 size=  428288kB time=00:19:14.06 bitrate=3040.2kbits/s dup=1 drop=0 speed=4.84x    \nframe=34695 fps=145 q=26.0 size=  429056kB time=00:19:16.41 bitrate=3039.4kbits/s dup=1 drop=0 speed=4.84x    \nframe=34764 fps=145 q=26.0 size=  430336kB time=00:19:18.75 bitrate=3042.3kbits/s dup=1 drop=0 speed=4.84x    \nframe=34840 fps=145 q=26.0 size=  431360kB time=00:19:21.23 bitrate=3043.1kbits/s dup=1 drop=0 speed=4.84x    \nframe=34915 fps=145 q=26.0 size=  432384kB time=00:19:23.83 bitrate=3043.5kbits/s dup=1 drop=0 speed=4.84x    \nframe=34987 fps=145 q=26.0 size=  432896kB time=00:19:26.13 bitrate=3041.0kbits/s dup=1 drop=0 speed=4.84x    \nframe=35050 fps=145 q=26.0 size=  433920kB time=00:19:28.22 bitrate=3042.8kbits/s dup=1 drop=0 speed=4.84x    \nframe=35132 fps=145 q=26.0 size=  434944kB time=00:19:30.95 bitrate=3042.9kbits/s dup=1 drop=0 speed=4.84x    \nframe=35215 fps=145 q=26.0 size=  435968kB time=00:19:33.73 bitrate=3042.8kbits/s dup=1 drop=0 speed=4.84x    \nframe=35336 fps=145 q=26.0 size=  436480kB time=00:19:37.82 bitrate=3035.8kbits/s dup=1 drop=0 speed=4.85x    \nframe=35460 fps=146 q=26.0 size=  436480kB time=00:19:41.92 bitrate=3025.3kbits/s dup=1 drop=0 speed=4.85x    \nframe=35589 fps=146 q=26.0 size=  436736kB time=00:19:46.23 bitrate=3016.0kbits/s dup=1 drop=0 speed=4.86x    \nframe=35723 fps=146 q=26.0 size=  436736kB time=00:19:50.71 bitrate=3004.7kbits/s dup=1 drop=0 speed=4.87x    \nframe=35845 fps=146 q=26.0 size=  436992kB time=00:19:54.72 bitrate=2996.4kbits/s dup=1 drop=0 speed=4.88x    \nframe=35965 fps=147 q=26.0 size=  436992kB time=00:19:58.77 bitrate=2986.2kbits/s dup=1 drop=0 speed=4.88x    \nframe=36091 fps=147 q=26.0 size=  437248kB time=00:20:02.95 bitrate=2977.6kbits/s dup=1 drop=0 speed=4.89x    \n[mp4 @ 0x63af0b83afc0] Starting second pass: moving the moov atom to the beginning of the file\nframe=36093 fps=147 q=-1.0 Lsize=  438243kB time=00:20:03.13 bitrate=2984.0kbits/s dup=1 drop=0 speed=4.88x    \nvideo:421687kB audio:15623kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.213209%\n[libx264 @ 0x63af0b869440] frame I:151   Avg QP:16.89  size:416149\n[libx264 @ 0x63af0b869440] frame P:10342 Avg QP:20.36  size: 31481\n[libx264 @ 0x63af0b869440] frame B:25600 Avg QP:23.91  size:  1695\n[libx264 @ 0x63af0b869440] consecutive B-frames:  3.2%  5.6%  3.3% 87.9%\n[libx264 @ 0x63af0b869440] mb I  I16..4:  3.1%  3.9% 93.1%\n[libx264 @ 0x63af0b869440] mb P  I16..4:  0.1%  1.1%  1.3%  P16..4: 45.0% 10.8%  9.4%  0.0%  0.0%    skip:32.4%\n[libx264 @ 0x63af0b869440] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  8.4%  1.5%  0.2%  direct: 1.3%  skip:88.6%  L0:35.5% L1:43.0% BI:21.5%\n[libx264 @ 0x63af0b869440] 8x8 transform intra:29.4% inter:56.6%\n[libx264 @ 0x63af0b869440] coded y,uvDC,uvAC intra: 95.4% 61.0% 25.6% inter: 7.3% 4.7% 0.1%\n[libx264 @ 0x63af0b869440] i16 v,h,dc,p: 36%  7% 48% 10%\n[libx264 @ 0x63af0b869440] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 15% 23%  6%  8%  6%  7%  7% 10%\n[libx264 @ 0x63af0b869440] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 15% 13%  9% 11%  9%  9%  9% 10%\n[libx264 @ 0x63af0b869440] i8c dc,h,v,p: 50% 23% 22%  5%\n[libx264 @ 0x63af0b869440] Weighted P-Frames: Y:7.8% UV:3.6%\n[libx264 @ 0x63af0b869440] kb/s:2871.30\n[aac @ 0x63af0b86d900] Qavg: 65514.105\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.466667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.470023"
        }
      ],
      "format": {
        "duration": "16.471000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1159.867969"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1159.894422"
        }
      ],
      "format": {
        "duration": "1159.915000"
      }
    },
    "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": "1203.100000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1203.125000"
      }
    ],
    "format": {
      "duration": "1203.125000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": true,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1203.12,
    "final_duration_sec": 1203.125,
    "duration_diff_sec": 0.005000000000109139,
    "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."
  ]
}