{
  "project_id": "28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan",
  "step": 18,
  "status": "completed",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/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/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1464.000000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1463.821000"
        }
      ],
      "format": {
        "duration": "1464.000000"
      }
    },
    "ffmpeg_tail": ":23:45.81 bitrate=3268.2kbits/s dup=1 drop=0 speed=4.33x    \nframe=42848 fps=130 q=26.0 size=  569344kB time=00:23:48.16 bitrate=3265.8kbits/s dup=1 drop=0 speed=4.33x    \nframe=42919 fps=130 q=26.0 size=  570368kB time=00:23:50.55 bitrate=3266.2kbits/s dup=1 drop=0 speed=4.33x    \nframe=43022 fps=130 q=26.0 size=  570624kB time=00:23:54.00 bitrate=3259.8kbits/s dup=1 drop=0 speed=4.34x    \nframe=43068 fps=130 q=26.0 size=  571392kB time=00:23:55.58 bitrate=3260.6kbits/s dup=1 drop=0 speed=4.33x    \nframe=43086 fps=130 q=26.0 size=  571648kB time=00:23:56.13 bitrate=3260.8kbits/s dup=1 drop=0 speed=4.33x    \nframe=43104 fps=130 q=26.0 size=  571904kB time=00:23:56.69 bitrate=3261.0kbits/s dup=1 drop=0 speed=4.32x    \nframe=43125 fps=130 q=26.0 size=  571904kB time=00:23:57.46 bitrate=3259.2kbits/s dup=1 drop=0 speed=4.32x    \nframe=43145 fps=129 q=26.0 size=  572160kB time=00:23:58.05 bitrate=3259.3kbits/s dup=1 drop=0 speed=4.32x    \nframe=43168 fps=129 q=26.0 size=  572160kB time=00:23:58.87 bitrate=3257.5kbits/s dup=1 drop=0 speed=4.31x    \nframe=43192 fps=129 q=26.0 size=  572160kB time=00:23:59.68 bitrate=3255.7kbits/s dup=1 drop=0 speed=4.31x    \nframe=43218 fps=129 q=26.0 size=  572416kB time=00:24:00.49 bitrate=3255.3kbits/s dup=1 drop=0 speed= 4.3x    \nframe=43242 fps=129 q=26.0 size=  572416kB time=00:24:01.30 bitrate=3253.5kbits/s dup=1 drop=0 speed= 4.3x    \nframe=43265 fps=129 q=26.0 size=  572416kB time=00:24:02.11 bitrate=3251.6kbits/s dup=1 drop=0 speed= 4.3x    \nframe=43315 fps=129 q=26.0 size=  572416kB time=00:24:03.77 bitrate=3247.9kbits/s dup=1 drop=0 speed=4.29x    \nframe=43442 fps=129 q=26.0 size=  572416kB time=00:24:07.95 bitrate=3238.5kbits/s dup=1 drop=0 speed= 4.3x    \nframe=43575 fps=129 q=26.0 size=  572672kB time=00:24:12.39 bitrate=3230.1kbits/s dup=1 drop=0 speed=4.31x    \nframe=43710 fps=129 q=26.0 size=  572672kB time=00:24:16.91 bitrate=3220.0kbits/s dup=1 drop=0 speed=4.31x    \nframe=43813 fps=130 q=26.0 size=  572928kB time=00:24:20.33 bitrate=3213.9kbits/s dup=1 drop=0 speed=4.32x    \nframe=43836 fps=129 q=26.0 size=  572928kB time=00:24:21.09 bitrate=3212.3kbits/s dup=1 drop=0 speed=4.31x    \nframe=43859 fps=129 q=26.0 size=  572928kB time=00:24:21.91 bitrate=3210.5kbits/s dup=1 drop=0 speed=4.31x    \nframe=43881 fps=129 q=26.0 size=  572928kB time=00:24:22.63 bitrate=3208.9kbits/s dup=1 drop=0 speed= 4.3x    \nframe=43900 fps=129 q=26.0 size=  572928kB time=00:24:23.23 bitrate=3207.6kbits/s dup=1 drop=0 speed= 4.3x    \n[mp4 @ 0x55bb5bed8540] Starting second pass: moving the moov atom to the beginning of the file\nframe=43920 fps=129 q=-1.0 Lsize=  574229kB time=00:24:23.90 bitrate=3213.4kbits/s dup=1 drop=0 speed=4.29x    \nvideo:553987kB audio:19109kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.197676%\n[libx264 @ 0x55bb5c2cfa40] frame I:181   Avg QP:16.87  size:419860\n[libx264 @ 0x55bb5c2cfa40] frame P:12634 Avg QP:20.49  size: 34251\n[libx264 @ 0x55bb5c2cfa40] frame B:31105 Avg QP:25.11  size:  1883\n[libx264 @ 0x55bb5c2cfa40] consecutive B-frames:  3.7%  4.6%  2.8% 88.9%\n[libx264 @ 0x55bb5c2cfa40] mb I  I16..4:  2.6%  4.6% 92.8%\n[libx264 @ 0x55bb5c2cfa40] mb P  I16..4:  0.1%  1.3%  1.4%  P16..4: 47.6% 11.2%  9.3%  0.0%  0.0%    skip:29.0%\n[libx264 @ 0x55bb5c2cfa40] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  9.9%  1.8%  0.1%  direct: 1.3%  skip:86.9%  L0:37.4% L1:42.1% BI:20.5%\n[libx264 @ 0x55bb5c2cfa40] 8x8 transform intra:32.3% inter:58.5%\n[libx264 @ 0x55bb5c2cfa40] coded y,uvDC,uvAC intra: 96.8% 56.9% 23.2% inter: 7.9% 4.2% 0.1%\n[libx264 @ 0x55bb5c2cfa40] i16 v,h,dc,p: 26%  6% 56% 12%\n[libx264 @ 0x55bb5c2cfa40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 13% 24%  7%  9%  7%  8%  8% 10%\n[libx264 @ 0x55bb5c2cfa40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 13% 13% 10% 12%  9% 10%  9% 11%\n[libx264 @ 0x55bb5c2cfa40] i8c dc,h,v,p: 52% 22% 21%  5%\n[libx264 @ 0x55bb5c2cfa40] Weighted P-Frames: Y:9.9% UV:3.7%\n[libx264 @ 0x55bb5c2cfa40] kb/s:3099.90\n[aac @ 0x55bb5bd154c0] Qavg: 65515.184\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": "15.333333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "15.320000"
        }
      ],
      "format": {
        "duration": "15.334000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1421.802018"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1421.786440"
        }
      ],
      "format": {
        "duration": "1421.969000"
      }
    },
    "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": "1464.000000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1463.821000"
      }
    ],
    "format": {
      "duration": "1464.000000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": true,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1464.037,
    "final_duration_sec": 1464.0,
    "duration_diff_sec": -0.03700000000003456,
    "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."
  ]
}