{
  "project_id": "01062026-003-Tran-Quoc-Toan",
  "step": 18,
  "status": "completed",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/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/01062026-003-Tran-Quoc-Toan/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toan/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1161.333333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1160.415000"
        }
      ],
      "format": {
        "duration": "1161.334000"
      }
    },
    "ffmpeg_tail": "18:37.31 bitrate=3275.3kbits/s dup=1 drop=0 speed=3.57x    \nframe=33579 fps=107 q=26.0 size=  447744kB time=00:18:39.19 bitrate=3277.3kbits/s dup=1 drop=0 speed=3.57x    \nframe=33637 fps=107 q=26.0 size=  448256kB time=00:18:41.19 bitrate=3275.2kbits/s dup=1 drop=0 speed=3.57x    \nframe=33696 fps=107 q=26.0 size=  450048kB time=00:18:43.11 bitrate=3282.6kbits/s dup=1 drop=0 speed=3.57x    \nframe=33753 fps=107 q=26.0 size=  451328kB time=00:18:45.03 bitrate=3286.4kbits/s dup=1 drop=0 speed=3.57x    \nframe=33809 fps=107 q=26.0 size=  452352kB time=00:18:46.91 bitrate=3288.3kbits/s dup=1 drop=0 speed=3.57x    \nframe=33870 fps=107 q=26.0 size=  453120kB time=00:18:48.96 bitrate=3287.9kbits/s dup=1 drop=0 speed=3.57x    \nframe=33932 fps=107 q=26.0 size=  454400kB time=00:18:51.00 bitrate=3291.3kbits/s dup=1 drop=0 speed=3.57x    \nframe=34000 fps=107 q=26.0 size=  454912kB time=00:18:53.22 bitrate=3288.5kbits/s dup=1 drop=0 speed=3.57x    \nframe=34076 fps=107 q=26.0 size=  455680kB time=00:18:55.23 bitrate=3288.2kbits/s dup=1 drop=0 speed=3.57x    \nframe=34098 fps=107 q=26.0 size=  455680kB time=00:18:55.95 bitrate=3286.2kbits/s dup=1 drop=0 speed=3.57x    \nframe=34113 fps=107 q=26.0 size=  455680kB time=00:18:56.47 bitrate=3284.7kbits/s dup=1 drop=0 speed=3.56x    \nframe=34129 fps=107 q=26.0 size=  455680kB time=00:18:56.98 bitrate=3283.2kbits/s dup=1 drop=0 speed=3.56x    \nframe=34146 fps=107 q=26.0 size=  455680kB time=00:18:57.58 bitrate=3281.5kbits/s dup=1 drop=0 speed=3.56x    \nframe=34161 fps=107 q=26.0 size=  455680kB time=00:18:58.04 bitrate=3280.1kbits/s dup=1 drop=0 speed=3.55x    \nframe=34179 fps=107 q=26.0 size=  455680kB time=00:18:58.64 bitrate=3278.4kbits/s dup=1 drop=0 speed=3.55x    \nframe=34280 fps=107 q=26.0 size=  455680kB time=00:19:02.01 bitrate=3268.7kbits/s dup=1 drop=0 speed=3.55x    \nframe=34400 fps=107 q=26.0 size=  455936kB time=00:19:06.02 bitrate=3259.1kbits/s dup=1 drop=0 speed=3.56x    \nframe=34432 fps=107 q=26.0 size=  455936kB time=00:19:07.09 bitrate=3256.1kbits/s dup=1 drop=0 speed=3.56x    \nframe=34446 fps=107 q=26.0 size=  455936kB time=00:19:07.56 bitrate=3254.7kbits/s dup=1 drop=0 speed=3.55x    \nframe=34536 fps=107 q=26.0 size=  455936kB time=00:19:10.55 bitrate=3246.3kbits/s dup=1 drop=0 speed=3.56x    \nframe=34644 fps=107 q=26.0 size=  456192kB time=00:19:14.17 bitrate=3237.9kbits/s dup=1 drop=0 speed=3.56x    \nframe=34756 fps=107 q=26.0 size=  456192kB time=00:19:17.88 bitrate=3227.5kbits/s dup=1 drop=0 speed=3.57x    \n[mp4 @ 0x572fc31ce340] Starting second pass: moving the moov atom to the beginning of the file\nframe=34840 fps=107 q=-1.0 Lsize=  457345kB time=00:19:21.23 bitrate=3226.4kbits/s dup=1 drop=0 speed=3.57x    \nvideo:441417kB audio:15034kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.195938%\n[libx264 @ 0x572fc32189c0] frame I:145   Avg QP:16.79  size:440607\n[libx264 @ 0x572fc32189c0] frame P:10215 Avg QP:20.48  size: 33728\n[libx264 @ 0x572fc32189c0] frame B:24480 Avg QP:24.82  size:  1781\n[libx264 @ 0x572fc32189c0] consecutive B-frames:  4.4%  4.6%  3.6% 87.4%\n[libx264 @ 0x572fc32189c0] mb I  I16..4:  3.1%  3.7% 93.1%\n[libx264 @ 0x572fc32189c0] mb P  I16..4:  0.1%  1.2%  1.3%  P16..4: 45.1%  9.9%  8.2%  0.0%  0.0%    skip:34.1%\n[libx264 @ 0x572fc32189c0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  9.5%  1.7%  0.2%  direct: 1.2%  skip:87.5%  L0:37.2% L1:41.3% BI:21.5%\n[libx264 @ 0x572fc32189c0] 8x8 transform intra:31.3% inter:58.9%\n[libx264 @ 0x572fc32189c0] coded y,uvDC,uvAC intra: 96.5% 57.6% 25.2% inter: 7.9% 4.2% 0.1%\n[libx264 @ 0x572fc32189c0] i16 v,h,dc,p: 32%  5% 52% 11%\n[libx264 @ 0x572fc32189c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 13% 24%  7%  9%  7%  8%  8% 10%\n[libx264 @ 0x572fc32189c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 14% 12%  9% 12%  9% 10%  9% 11%\n[libx264 @ 0x572fc32189c0] i8c dc,h,v,p: 52% 22% 21%  5%\n[libx264 @ 0x572fc32189c0] Weighted P-Frames: Y:10.1% UV:3.5%\n[libx264 @ 0x572fc32189c0] kb/s:3113.74\n[aac @ 0x572fc31c9c80] Qavg: 65512.738\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.460000"
        }
      ],
      "format": {
        "duration": "16.467000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1118.103320"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1117.194467"
        }
      ],
      "format": {
        "duration": "1118.150000"
      }
    },
    "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": "1161.333333"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1160.415000"
      }
    ],
    "format": {
      "duration": "1161.334000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": true,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1161.351,
    "final_duration_sec": 1161.334,
    "duration_diff_sec": -0.01700000000005275,
    "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."
  ]
}