{
  "project_id": "01062026-002-Chu-Van-An",
  "step": 18,
  "status": "needs_review",
  "inputs": {
    "intro_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/intro/intro.mp4",
    "main_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/main_story.mp4",
    "main_qa_report_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/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-002-Chu-Van-An/output/thumbnails/thumb_16x9_final.png",
    "thumbnail_9x16_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/thumbnails/thumb_9x16_final.png"
  },
  "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/final/final_video.mp4",
  "probe_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/final/final_video_probe.json",
  "blackdetect_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/final/final_blackdetect.json",
  "package_response": {
    "status": "ok",
    "output_video_path": "/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-An/output/final/final_video.mp4",
    "probe": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1159.400000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "24000",
          "channels": 1,
          "duration": "1158.430000"
        }
      ],
      "format": {
        "duration": "1159.400000"
      }
    },
    "ffmpeg_tail": "18:15.31 bitrate=3348.7kbits/s dup=1 drop=0 speed= 4.6x    \nframe=32925 fps=138 q=26.0 size=  448512kB time=00:18:17.44 bitrate=3348.0kbits/s dup=1 drop=0 speed= 4.6x    \nframe=32997 fps=138 q=26.0 size=  449792kB time=00:18:19.79 bitrate=3350.3kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33060 fps=138 q=26.0 size=  451072kB time=00:18:21.92 bitrate=3353.4kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33136 fps=138 q=26.0 size=  451840kB time=00:18:24.48 bitrate=3351.3kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33198 fps=138 q=26.0 size=  453376kB time=00:18:26.49 bitrate=3356.6kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33263 fps=138 q=26.0 size=  453888kB time=00:18:28.71 bitrate=3353.7kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33333 fps=138 q=26.0 size=  455168kB time=00:18:31.05 bitrate=3356.0kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33395 fps=138 q=26.0 size=  456704kB time=00:18:33.15 bitrate=3361.0kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33462 fps=138 q=26.0 size=  457728kB time=00:18:35.32 bitrate=3362.0kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33528 fps=138 q=26.0 size=  458496kB time=00:18:37.50 bitrate=3361.1kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33600 fps=138 q=26.0 size=  459520kB time=00:18:39.97 bitrate=3361.1kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33667 fps=138 q=26.0 size=  460544kB time=00:18:42.15 bitrate=3362.1kbits/s dup=1 drop=0 speed= 4.6x    \nframe=33724 fps=138 q=26.0 size=  462080kB time=00:18:44.03 bitrate=3367.7kbits/s dup=1 drop=0 speed=4.59x    \nframe=33794 fps=138 q=26.0 size=  462592kB time=00:18:46.37 bitrate=3364.4kbits/s dup=1 drop=0 speed=4.59x    \nframe=33864 fps=138 q=26.0 size=  463360kB time=00:18:48.76 bitrate=3362.8kbits/s dup=1 drop=0 speed=4.59x    \nframe=33971 fps=138 q=26.0 size=  464384kB time=00:18:51.62 bitrate=3361.7kbits/s dup=1 drop=0 speed= 4.6x    \nframe=34085 fps=138 q=26.0 size=  464384kB time=00:18:55.46 bitrate=3350.4kbits/s dup=1 drop=0 speed= 4.6x    \nframe=34213 fps=138 q=26.0 size=  464640kB time=00:18:59.73 bitrate=3339.7kbits/s dup=1 drop=0 speed=4.61x    \nframe=34335 fps=139 q=26.0 size=  464640kB time=00:19:03.82 bitrate=3327.7kbits/s dup=1 drop=0 speed=4.62x    \nframe=34461 fps=139 q=26.0 size=  464896kB time=00:19:08.00 bitrate=3317.4kbits/s dup=1 drop=0 speed=4.63x    \nframe=34585 fps=139 q=26.0 size=  464896kB time=00:19:12.14 bitrate=3305.5kbits/s dup=1 drop=0 speed=4.63x    \nframe=34706 fps=139 q=26.0 size=  464896kB time=00:19:16.15 bitrate=3294.0kbits/s dup=1 drop=0 speed=4.64x    \n[mp4 @ 0x56811c144300] Starting second pass: moving the moov atom to the beginning of the file\nframe=34782 fps=139 q=-1.0 Lsize=  466175kB time=00:19:19.30 bitrate=3294.1kbits/s dup=1 drop=0 speed=4.64x    \nvideo:450205kB audio:15077kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.191872%\n[libx264 @ 0x56811c1d35c0] frame I:146   Avg QP:16.84  size:423868\n[libx264 @ 0x56811c1d35c0] frame P:10319 Avg QP:20.50  size: 34660\n[libx264 @ 0x56811c1d35c0] frame B:24317 Avg QP:24.60  size:  1705\n[libx264 @ 0x56811c1d35c0] consecutive B-frames:  4.6%  5.5%  2.9% 87.0%\n[libx264 @ 0x56811c1d35c0] mb I  I16..4:  3.2%  4.2% 92.6%\n[libx264 @ 0x56811c1d35c0] mb P  I16..4:  0.1%  1.4%  1.4%  P16..4: 46.8% 10.4%  8.6%  0.0%  0.0%    skip:31.3%\n[libx264 @ 0x56811c1d35c0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  9.1%  1.6%  0.1%  direct: 1.1%  skip:88.1%  L0:37.2% L1:42.0% BI:20.8%\n[libx264 @ 0x56811c1d35c0] 8x8 transform intra:33.1% inter:61.2%\n[libx264 @ 0x56811c1d35c0] coded y,uvDC,uvAC intra: 96.4% 58.7% 23.7% inter: 8.3% 4.6% 0.1%\n[libx264 @ 0x56811c1d35c0] i16 v,h,dc,p: 31%  6% 51% 12%\n[libx264 @ 0x56811c1d35c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 13% 23%  7%  8%  7%  7%  8% 10%\n[libx264 @ 0x56811c1d35c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 14% 12%  9% 11%  9% 10%  9% 11%\n[libx264 @ 0x56811c1d35c0] i8c dc,h,v,p: 51% 23% 22%  5%\n[libx264 @ 0x56811c1d35c0] Weighted P-Frames: Y:11.2% UV:3.4%\n[libx264 @ 0x56811c1d35c0] kb/s:3181.02\n[aac @ 0x56811c1d7700] Qavg: 65514.293\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.400000"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "16.390023"
        }
      ],
      "format": {
        "duration": "16.400000"
      }
    },
    "main": {
      "programs": [],
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_type": "video",
          "duration": "1116.235352"
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_type": "audio",
          "sample_rate": "22050",
          "channels": 1,
          "duration": "1115.287438"
        }
      ],
      "format": {
        "duration": "1116.282000"
      }
    },
    "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": "1159.400000"
      },
      {
        "index": 1,
        "codec_name": "aac",
        "codec_type": "audio",
        "sample_rate": "24000",
        "channels": 1,
        "duration": "1158.430000"
      }
    ],
    "format": {
      "duration": "1159.400000"
    }
  },
  "validation": {
    "final_exists": true,
    "has_audio": true,
    "has_video": true,
    "main_qa_passed": false,
    "order": [
      "intro",
      "main_story",
      "outro"
    ],
    "expected_duration_sec": 1159.416,
    "final_duration_sec": 1159.4,
    "duration_diff_sec": -0.015999999999849024,
    "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."
  ]
}