{
  "project_id": "001-La-Van-Cau",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/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/001-La-Van-Cau/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/001-La-Van-Cau/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1425.666667"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1425.211000"
        }
      ],
      "format": {
        "duration": "1425.667000"
      }
    },
    "ffmpeg_tail": "273 q=16.0 size= 1341952kB time=00:21:06.17 bitrate=8682.3kbits/s dup=1 drop=0 speed=9.09x    \nframe=38147 fps=273 q=16.0 size= 1346304kB time=00:21:11.46 bitrate=8674.2kbits/s dup=1 drop=0 speed= 9.1x    \nframe=38309 fps=273 q=17.0 size= 1353984kB time=00:21:16.92 bitrate=8686.3kbits/s dup=1 drop=0 speed= 9.1x    \nframe=38465 fps=273 q=15.0 size= 1359872kB time=00:21:22.17 bitrate=8688.4kbits/s dup=1 drop=0 speed=9.11x    \nframe=38648 fps=274 q=14.0 size= 1364224kB time=00:21:28.19 bitrate=8675.5kbits/s dup=1 drop=0 speed=9.12x    \nframe=38794 fps=274 q=15.0 size= 1371136kB time=00:21:33.09 bitrate=8686.4kbits/s dup=1 drop=0 speed=9.12x    \nframe=38939 fps=274 q=16.0 size= 1377792kB time=00:21:37.87 bitrate=8696.4kbits/s dup=1 drop=0 speed=9.12x    \nframe=39085 fps=274 q=17.0 size= 1385984kB time=00:21:42.78 bitrate=8715.2kbits/s dup=1 drop=0 speed=9.12x    \nframe=39217 fps=274 q=15.0 size= 1389568kB time=00:21:47.17 bitrate=8708.3kbits/s dup=1 drop=0 speed=9.12x    \nframe=39378 fps=274 q=13.0 size= 1390336kB time=00:21:52.51 bitrate=8677.7kbits/s dup=1 drop=0 speed=9.13x    \nframe=39502 fps=274 q=15.0 size= 1396224kB time=00:21:56.65 bitrate=8687.1kbits/s dup=1 drop=0 speed=9.13x    \nframe=39652 fps=274 q=14.0 size= 1403648kB time=00:22:01.64 bitrate=8700.3kbits/s dup=1 drop=0 speed=9.13x    \nframe=39786 fps=274 q=14.0 size= 1409024kB time=00:22:06.16 bitrate=8703.8kbits/s dup=1 drop=0 speed=9.13x    \nframe=39926 fps=274 q=15.0 size= 1415936kB time=00:22:10.77 bitrate=8716.2kbits/s dup=1 drop=0 speed=9.13x    \nframe=40083 fps=274 q=15.0 size= 1420032kB time=00:22:16.02 bitrate=8707.1kbits/s dup=1 drop=0 speed=9.13x    \nframe=40228 fps=274 q=14.0 size= 1420544kB time=00:22:20.84 bitrate=8678.9kbits/s dup=1 drop=0 speed=9.13x    \nframe=40338 fps=273 q=14.0 size= 1421568kB time=00:22:24.55 bitrate=8661.2kbits/s dup=1 drop=0 speed=9.09x    \nframe=40469 fps=273 q=16.0 size= 1428224kB time=00:22:28.90 bitrate=8673.7kbits/s dup=1 drop=0 speed=9.09x    \nframe=40621 fps=273 q=15.0 size= 1434112kB time=00:22:33.98 bitrate=8676.8kbits/s dup=1 drop=0 speed= 9.1x    \nframe=40757 fps=273 q=15.0 size= 1437696kB time=00:22:38.46 bitrate=8669.8kbits/s dup=1 drop=0 speed= 9.1x    \nframe=40915 fps=273 q=17.0 size= 1446400kB time=00:22:43.79 bitrate=8688.2kbits/s dup=1 drop=0 speed= 9.1x    \nframe=41073 fps=273 q=16.0 size= 1454336kB time=00:22:49.04 bitrate=8702.4kbits/s dup=1 drop=0 speed=9.11x    \nframe=41238 fps=273 q=15.0 size= 1459456kB time=00:22:54.50 bitrate=8698.3kbits/s dup=1 drop=0 speed=9.11x    \nframe=41409 fps=274 q=15.0 size= 1463808kB time=00:23:00.22 bitrate=8688.1kbits/s dup=1 drop=0 speed=9.12x    \nframe=41565 fps=274 q=17.0 size= 1470208kB time=00:23:05.42 bitrate=8693.3kbits/s dup=1 drop=0 speed=9.12x    \nframe=41680 fps=273 q=15.0 size= 1475840kB time=00:23:09.31 bitrate=8702.2kbits/s dup=1 drop=0 speed= 9.1x    \nframe=41836 fps=273 q=15.0 size= 1477888kB time=00:23:14.43 bitrate=8682.3kbits/s dup=1 drop=0 speed= 9.1x    \nframe=41986 fps=273 q=13.0 size= 1478656kB time=00:23:19.33 bitrate=8656.3kbits/s dup=1 drop=0 speed= 9.1x    \nframe=42141 fps=273 q=15.0 size= 1478912kB time=00:23:24.50 bitrate=8626.0kbits/s dup=1 drop=0 speed=9.11x    \nframe=42289 fps=273 q=15.0 size= 1479168kB time=00:23:29.45 bitrate=8597.2kbits/s dup=1 drop=0 speed=9.11x    \nframe=42442 fps=273 q=13.0 size= 1479168kB time=00:23:34.57 bitrate=8566.1kbits/s dup=1 drop=0 speed=9.11x    \nframe=42588 fps=274 q=13.0 size= 1479680kB time=00:23:39.43 bitrate=8539.7kbits/s dup=1 drop=0 speed=9.12x    \nframe=42740 fps=274 q=13.0 size= 1479680kB time=00:23:44.46 bitrate=8509.5kbits/s dup=1 drop=0 speed=9.12x    \n[mp4 @ 0x584d80296080] Starting second pass: moving the moov atom to the beginning of the file\nframe=42770 fps=273 q=15.0 Lsize= 1480883kB time=00:23:45.53 bitrate=8510.1kbits/s dup=1 drop=0 speed=9.08x    \nvideo:1462222kB audio:17714kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.063983%\n[aac @ 0x584d8029a2c0] Qavg: 65480.633\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.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": "1382.436654"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1382.001451"
        }
      ],
      "format": {
        "duration": "1382.484000"
      }
    },
    "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": "1425.666667"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1425.211000"
      }
    ],
    "format": {
      "duration": "1425.667000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1425.6889999999999,
    "final_duration_sec": 1425.667,
    "duration_diff_sec": -0.021999999999934516,
    "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."
  ]
}