{
  "project_id": "10062026-001-Tran-Quoc-Tuan",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/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/10062026-001-Tran-Quoc-Tuan/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1319.800000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1318.879000"
        }
      ],
      "format": {
        "duration": "1319.800000"
      }
    },
    "ffmpeg_tail": "21:21.28 bitrate=3319.4kbits/s dup=1 drop=0 speed=2.44x    \nframe=38452 fps= 73 q=23.0 size=  519424kB time=00:21:21.66 bitrate=3320.0kbits/s dup=1 drop=0 speed=2.44x    \nframe=38466 fps= 73 q=26.0 size=  519936kB time=00:21:22.13 bitrate=3322.1kbits/s dup=1 drop=0 speed=2.44x    \nframe=38476 fps= 73 q=26.0 size=  519936kB time=00:21:22.43 bitrate=3321.3kbits/s dup=1 drop=0 speed=2.44x    \nframe=38487 fps= 73 q=26.0 size=  519936kB time=00:21:22.85 bitrate=3320.2kbits/s dup=1 drop=0 speed=2.44x    \nframe=38497 fps= 73 q=26.0 size=  520192kB time=00:21:23.15 bitrate=3321.0kbits/s dup=1 drop=0 speed=2.43x    \nframe=38508 fps= 73 q=26.0 size=  520192kB time=00:21:23.49 bitrate=3320.2kbits/s dup=1 drop=0 speed=2.43x    \nframe=38519 fps= 73 q=26.0 size=  520448kB time=00:21:23.88 bitrate=3320.8kbits/s dup=1 drop=0 speed=2.43x    \nframe=38532 fps= 73 q=26.0 size=  521216kB time=00:21:24.30 bitrate=3324.6kbits/s dup=1 drop=0 speed=2.43x    \nframe=38560 fps= 73 q=26.0 size=  521216kB time=00:21:25.29 bitrate=3322.1kbits/s dup=1 drop=0 speed=2.43x    \nframe=38621 fps= 73 q=26.0 size=  521984kB time=00:21:27.29 bitrate=3321.8kbits/s dup=1 drop=0 speed=2.43x    \nframe=38682 fps= 73 q=26.0 size=  522496kB time=00:21:29.30 bitrate=3319.9kbits/s dup=1 drop=0 speed=2.43x    \nframe=38771 fps= 73 q=26.0 size=  523264kB time=00:21:32.07 bitrate=3317.6kbits/s dup=1 drop=0 speed=2.43x    \nframe=38858 fps= 73 q=26.0 size=  523264kB time=00:21:34.63 bitrate=3311.0kbits/s dup=1 drop=0 speed=2.44x    \nframe=38922 fps= 73 q=26.0 size=  523520kB time=00:21:36.76 bitrate=3307.2kbits/s dup=1 drop=0 speed=2.44x    \nframe=39023 fps= 73 q=26.0 size=  523520kB time=00:21:40.13 bitrate=3298.6kbits/s dup=1 drop=0 speed=2.44x    \nframe=39118 fps= 73 q=26.0 size=  523520kB time=00:21:43.29 bitrate=3290.6kbits/s dup=1 drop=0 speed=2.45x    \nframe=39213 fps= 74 q=26.0 size=  523776kB time=00:21:46.45 bitrate=3284.3kbits/s dup=1 drop=0 speed=2.45x    \nframe=39227 fps= 73 q=26.0 size=  523776kB time=00:21:46.92 bitrate=3283.1kbits/s dup=1 drop=0 speed=2.45x    \nframe=39250 fps= 73 q=26.0 size=  523776kB time=00:21:47.69 bitrate=3281.2kbits/s dup=1 drop=0 speed=2.45x    \nframe=39351 fps= 74 q=26.0 size=  523776kB time=00:21:51.06 bitrate=3272.7kbits/s dup=1 drop=0 speed=2.45x    \nframe=39439 fps= 74 q=26.0 size=  523776kB time=00:21:54.00 bitrate=3265.4kbits/s dup=1 drop=0 speed=2.45x    \nframe=39529 fps= 74 q=26.0 size=  524032kB time=00:21:56.99 bitrate=3259.6kbits/s dup=1 drop=0 speed=2.46x    \n[mp4 @ 0x58ebe29fd000] Starting second pass: moving the moov atom to the beginning of the file\nframe=39594 fps= 74 q=-1.0 Lsize=  525214kB time=00:21:59.70 bitrate=3260.2kbits/s dup=1 drop=0 speed=2.46x    \nvideo:506985kB audio:17208kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.194619%\n[libx264 @ 0x58ebe2f0b400] frame I:165   Avg QP:17.04  size:429396\n[libx264 @ 0x58ebe2f0b400] frame P:11474 Avg QP:20.59  size: 34498\n[libx264 @ 0x58ebe2f0b400] frame B:27955 Avg QP:25.05  size:  1877\n[libx264 @ 0x58ebe2f0b400] consecutive B-frames:  4.1%  4.3%  2.7% 88.9%\n[libx264 @ 0x58ebe2f0b400] mb I  I16..4:  2.9%  4.5% 92.6%\n[libx264 @ 0x58ebe2f0b400] mb P  I16..4:  0.1%  1.0%  1.1%  P16..4: 47.8% 10.6%  8.9%  0.0%  0.0%    skip:30.4%\n[libx264 @ 0x58ebe2f0b400] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 10.1%  1.8%  0.2%  direct: 1.2%  skip:86.8%  L0:36.8% L1:41.4% BI:21.7%\n[libx264 @ 0x58ebe2f0b400] 8x8 transform intra:30.1% inter:59.0%\n[libx264 @ 0x58ebe2f0b400] coded y,uvDC,uvAC intra: 96.9% 57.4% 24.7% inter: 8.4% 4.1% 0.1%\n[libx264 @ 0x58ebe2f0b400] i16 v,h,dc,p: 33%  8% 49% 10%\n[libx264 @ 0x58ebe2f0b400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 14% 23%  7%  8%  6%  8%  7% 11%\n[libx264 @ 0x58ebe2f0b400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 15% 12%  9% 11%  9% 10%  9% 11%\n[libx264 @ 0x58ebe2f0b400] i8c dc,h,v,p: 52% 24% 20%  5%\n[libx264 @ 0x58ebe2f0b400] Weighted P-Frames: Y:10.1% UV:3.4%\n[libx264 @ 0x58ebe2f0b400] kb/s:3146.85\n[aac @ 0x58ebe2b08ec0] Qavg: 65512.273\n",
    "method": "explicit_ffmpeg_audio_safe",
    "sample_rate": 24000,
    "channels": 1,
    "bgm_volume": 0.2,
    "outro_included": true,
    "width": 1920,
    "height": 1080
  },
  "input_probes": {
    "intro": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "16.833333"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.840000"
        }
      ],
      "format": {
        "duration": "16.841000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1276.201693"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1275.301451"
        }
      ],
      "format": {
        "duration": "1276.249000"
      }
    },
    "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": "1319.800000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1318.879000"
      }
    ],
    "format": {
      "duration": "1319.800000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1319.8239999999998,
    "final_duration_sec": 1319.8,
    "duration_diff_sec": -0.023999999999887223,
    "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."
  ]
}