{
  "project_id": "28052026-001-Tay-Son-That-Ho-Tuong",
  "step": 16,
  "status": "passed",
  "passed": true,
  "input_video": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/main_story.mp4",
  "duration_sec": 1063.716,
  "target_total_duration_sec": 1063.5300000000002,
  "duration_diff_sec": 0.186,
  "probe": {
    "path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/main_story.mp4",
    "duration_sec": 1063.716,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "size": 377391420,
    "has_video": true,
    "has_audio": true,
    "video_streams": [
      {
        "index": 0,
        "codec_name": "h264",
        "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
        "profile": "High",
        "codec_type": "video",
        "codec_tag_string": "avc1",
        "codec_tag": "0x31637661",
        "width": 1920,
        "height": 1080,
        "coded_width": 1920,
        "coded_height": 1080,
        "closed_captions": 0,
        "film_grain": 0,
        "has_b_frames": 2,
        "sample_aspect_ratio": "1:1",
        "display_aspect_ratio": "16:9",
        "pix_fmt": "yuv420p",
        "level": 40,
        "chroma_location": "left",
        "field_order": "progressive",
        "refs": 1,
        "is_avc": "true",
        "nal_length_size": "4",
        "id": "0x1",
        "r_frame_rate": "30/1",
        "avg_frame_rate": "490137600/16337951",
        "time_base": "1/15360",
        "start_pts": 707,
        "start_time": "0.046029",
        "duration_ts": 16337951,
        "duration": "1063.668685",
        "bit_rate": "2733473",
        "bits_per_raw_sample": "8",
        "nb_frames": "31910",
        "extradata_size": 47,
        "disposition": {
          "default": 1,
          "dub": 0,
          "original": 0,
          "comment": 0,
          "lyrics": 0,
          "karaoke": 0,
          "forced": 0,
          "hearing_impaired": 0,
          "visual_impaired": 0,
          "clean_effects": 0,
          "attached_pic": 0,
          "timed_thumbnails": 0,
          "captions": 0,
          "descriptions": 0,
          "metadata": 0,
          "dependent": 0,
          "still_image": 0
        },
        "tags": {
          "language": "und",
          "handler_name": "VideoHandler",
          "vendor_id": "[0][0][0][0]",
          "encoder": "Lavc59.37.100 libx264"
        }
      }
    ],
    "audio_streams": [
      {
        "index": 1,
        "codec_name": "aac",
        "codec_long_name": "AAC (Advanced Audio Coding)",
        "profile": "LC",
        "codec_type": "audio",
        "codec_tag_string": "mp4a",
        "codec_tag": "0x6134706d",
        "sample_fmt": "fltp",
        "sample_rate": "22050",
        "channels": 1,
        "channel_layout": "mono",
        "bits_per_sample": 0,
        "id": "0x2",
        "r_frame_rate": "0/0",
        "avg_frame_rate": "0/0",
        "time_base": "1/22050",
        "start_pts": 0,
        "start_time": "0.000000",
        "duration_ts": 23454330,
        "duration": "1063.688435",
        "bit_rate": "98402",
        "nb_frames": "22914",
        "extradata_size": 5,
        "disposition": {
          "default": 1,
          "dub": 0,
          "original": 0,
          "comment": 0,
          "lyrics": 0,
          "karaoke": 0,
          "forced": 0,
          "hearing_impaired": 0,
          "visual_impaired": 0,
          "clean_effects": 0,
          "attached_pic": 0,
          "timed_thumbnails": 0,
          "captions": 0,
          "descriptions": 0,
          "metadata": 0,
          "dependent": 0,
          "still_image": 0
        },
        "tags": {
          "language": "und",
          "handler_name": "SoundHandler",
          "vendor_id": "[0][0][0][0]"
        }
      }
    ],
    "raw": {
      "streams": [
        {
          "index": 0,
          "codec_name": "h264",
          "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
          "profile": "High",
          "codec_type": "video",
          "codec_tag_string": "avc1",
          "codec_tag": "0x31637661",
          "width": 1920,
          "height": 1080,
          "coded_width": 1920,
          "coded_height": 1080,
          "closed_captions": 0,
          "film_grain": 0,
          "has_b_frames": 2,
          "sample_aspect_ratio": "1:1",
          "display_aspect_ratio": "16:9",
          "pix_fmt": "yuv420p",
          "level": 40,
          "chroma_location": "left",
          "field_order": "progressive",
          "refs": 1,
          "is_avc": "true",
          "nal_length_size": "4",
          "id": "0x1",
          "r_frame_rate": "30/1",
          "avg_frame_rate": "490137600/16337951",
          "time_base": "1/15360",
          "start_pts": 707,
          "start_time": "0.046029",
          "duration_ts": 16337951,
          "duration": "1063.668685",
          "bit_rate": "2733473",
          "bits_per_raw_sample": "8",
          "nb_frames": "31910",
          "extradata_size": 47,
          "disposition": {
            "default": 1,
            "dub": 0,
            "original": 0,
            "comment": 0,
            "lyrics": 0,
            "karaoke": 0,
            "forced": 0,
            "hearing_impaired": 0,
            "visual_impaired": 0,
            "clean_effects": 0,
            "attached_pic": 0,
            "timed_thumbnails": 0,
            "captions": 0,
            "descriptions": 0,
            "metadata": 0,
            "dependent": 0,
            "still_image": 0
          },
          "tags": {
            "language": "und",
            "handler_name": "VideoHandler",
            "vendor_id": "[0][0][0][0]",
            "encoder": "Lavc59.37.100 libx264"
          }
        },
        {
          "index": 1,
          "codec_name": "aac",
          "codec_long_name": "AAC (Advanced Audio Coding)",
          "profile": "LC",
          "codec_type": "audio",
          "codec_tag_string": "mp4a",
          "codec_tag": "0x6134706d",
          "sample_fmt": "fltp",
          "sample_rate": "22050",
          "channels": 1,
          "channel_layout": "mono",
          "bits_per_sample": 0,
          "id": "0x2",
          "r_frame_rate": "0/0",
          "avg_frame_rate": "0/0",
          "time_base": "1/22050",
          "start_pts": 0,
          "start_time": "0.000000",
          "duration_ts": 23454330,
          "duration": "1063.688435",
          "bit_rate": "98402",
          "nb_frames": "22914",
          "extradata_size": 5,
          "disposition": {
            "default": 1,
            "dub": 0,
            "original": 0,
            "comment": 0,
            "lyrics": 0,
            "karaoke": 0,
            "forced": 0,
            "hearing_impaired": 0,
            "visual_impaired": 0,
            "clean_effects": 0,
            "attached_pic": 0,
            "timed_thumbnails": 0,
            "captions": 0,
            "descriptions": 0,
            "metadata": 0,
            "dependent": 0,
            "still_image": 0
          },
          "tags": {
            "language": "und",
            "handler_name": "SoundHandler",
            "vendor_id": "[0][0][0][0]"
          }
        }
      ],
      "format": {
        "filename": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/main_story.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "1063.716000",
        "size": "377391420",
        "bit_rate": "2838287",
        "probe_score": 100,
        "tags": {
          "major_brand": "isom",
          "minor_version": "512",
          "compatible_brands": "isomiso2avc1mp41",
          "encoder": "Lavf59.27.100"
        }
      }
    }
  },
  "concat_report": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/concat_report.json",
  "checks": {
    "main_exists": true,
    "has_audio": true,
    "has_video": true,
    "duration_reasonable": true,
    "concat_completed": true,
    "frames_extracted": true,
    "blackdetect_clear": true,
    "silencedetect_events_count": 56
  },
  "checkpoints": [
    {
      "label": "early",
      "timestamp_sec": 30.0
    },
    {
      "label": "mid",
      "timestamp_sec": 531.858
    },
    {
      "label": "late",
      "timestamp_sec": 1018.716
    }
  ],
  "part_joins": [
    {
      "label": "join_01_02_before",
      "timestamp_sec": 111.18
    },
    {
      "label": "join_01_02_after",
      "timestamp_sec": 111.68
    },
    {
      "label": "join_02_03_before",
      "timestamp_sec": 203.33
    },
    {
      "label": "join_02_03_after",
      "timestamp_sec": 203.83
    },
    {
      "label": "join_03_04_before",
      "timestamp_sec": 299.84
    },
    {
      "label": "join_03_04_after",
      "timestamp_sec": 300.34
    },
    {
      "label": "join_04_05_before",
      "timestamp_sec": 482.19
    },
    {
      "label": "join_04_05_after",
      "timestamp_sec": 482.69
    },
    {
      "label": "join_05_06_before",
      "timestamp_sec": 647.96
    },
    {
      "label": "join_05_06_after",
      "timestamp_sec": 648.46
    },
    {
      "label": "join_06_07_before",
      "timestamp_sec": 800.94
    },
    {
      "label": "join_06_07_after",
      "timestamp_sec": 801.44
    },
    {
      "label": "join_07_08_before",
      "timestamp_sec": 915.04
    },
    {
      "label": "join_07_08_after",
      "timestamp_sec": 915.54
    }
  ],
  "frames": [
    {
      "label": "early",
      "timestamp_sec": 30.0,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/early_30.000.jpg",
      "ok": true
    },
    {
      "label": "mid",
      "timestamp_sec": 531.858,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/mid_531.858.jpg",
      "ok": true
    },
    {
      "label": "late",
      "timestamp_sec": 1018.716,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/late_1018.716.jpg",
      "ok": true
    },
    {
      "label": "join_01_02_before",
      "timestamp_sec": 111.18,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_01_02_before_111.180.jpg",
      "ok": true
    },
    {
      "label": "join_01_02_after",
      "timestamp_sec": 111.68,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_01_02_after_111.680.jpg",
      "ok": true
    },
    {
      "label": "join_02_03_before",
      "timestamp_sec": 203.33,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_02_03_before_203.330.jpg",
      "ok": true
    },
    {
      "label": "join_02_03_after",
      "timestamp_sec": 203.83,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_02_03_after_203.830.jpg",
      "ok": true
    },
    {
      "label": "join_03_04_before",
      "timestamp_sec": 299.84,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_03_04_before_299.840.jpg",
      "ok": true
    },
    {
      "label": "join_03_04_after",
      "timestamp_sec": 300.34,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_03_04_after_300.340.jpg",
      "ok": true
    },
    {
      "label": "join_04_05_before",
      "timestamp_sec": 482.19,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_04_05_before_482.190.jpg",
      "ok": true
    },
    {
      "label": "join_04_05_after",
      "timestamp_sec": 482.69,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_04_05_after_482.690.jpg",
      "ok": true
    },
    {
      "label": "join_05_06_before",
      "timestamp_sec": 647.96,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_05_06_before_647.960.jpg",
      "ok": true
    },
    {
      "label": "join_05_06_after",
      "timestamp_sec": 648.46,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_05_06_after_648.460.jpg",
      "ok": true
    },
    {
      "label": "join_06_07_before",
      "timestamp_sec": 800.94,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_06_07_before_800.940.jpg",
      "ok": true
    },
    {
      "label": "join_06_07_after",
      "timestamp_sec": 801.44,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_06_07_after_801.440.jpg",
      "ok": true
    },
    {
      "label": "join_07_08_before",
      "timestamp_sec": 915.04,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_07_08_before_915.040.jpg",
      "ok": true
    },
    {
      "label": "join_07_08_after",
      "timestamp_sec": 915.54,
      "frame_path": "/data/video-pipeline/Youtube-Video-Maker/Project/28052026-001-Tay-Son-That-Ho-Tuong/output/qa_main_story/frames/join_07_08_after_915.540.jpg",
      "ok": true
    }
  ],
  "blackdetect_events": [],
  "silencedetect_events": [
    "[silencedetect @ 0x64fb938c8780] silence_start: 0",
    "[silencedetect @ 0x64fb938c8780] silence_end: 1.51773 | silence_duration: 1.51773",
    "[silencedetect @ 0x64fb938c8780] silence_start: 3.27438",
    "[silencedetect @ 0x64fb938c8780] silence_end: 4.9537 | silence_duration: 1.67932",
    "[silencedetect @ 0x64fb938c8780] silence_start: 111.234",
    "[silencedetect @ 0x64fb938c8780] silence_end: 113.029 | silence_duration: 1.79438",
    "[silencedetect @ 0x64fb938c8780] silence_start: 115.03",
    "[silencedetect @ 0x64fb938c8780] silence_end: 116.588 | silence_duration: 1.55782",
    "[silencedetect @ 0x64fb938c8780] silence_start: 203.391",
    "[silencedetect @ 0x64fb938c8780] silence_end: 205.112 | silence_duration: 1.72082",
    "[silencedetect @ 0x64fb938c8780] silence_start: 207.715",
    "[silencedetect @ 0x64fb938c8780] silence_end: 209.298 | silence_duration: 1.5829",
    "[silencedetect @ 0x64fb938c8780] silence_start: 243.494",
    "[silencedetect @ 0x64fb938c8780] silence_end: 244.552 | silence_duration: 1.05814",
    "[silencedetect @ 0x64fb938c8780] silence_start: 299.948",
    "[silencedetect @ 0x64fb938c8780] silence_end: 301.634 | silence_duration: 1.68549",
    "[silencedetect @ 0x64fb938c8780] silence_start: 304.233",
    "[silencedetect @ 0x64fb938c8780] silence_end: 305.821 | silence_duration: 1.58798",
    "[silencedetect @ 0x64fb938c8780] silence_start: 402.232",
    "[silencedetect @ 0x64fb938c8780] silence_end: 403.857 | silence_duration: 1.62549",
    "[silencedetect @ 0x64fb938c8780] silence_start: 405.981",
    "[silencedetect @ 0x64fb938c8780] silence_end: 407.623 | silence_duration: 1.64163",
    "[silencedetect @ 0x64fb938c8780] silence_start: 482.271",
    "[silencedetect @ 0x64fb938c8780] silence_end: 484.035 | silence_duration: 1.76395",
    "[silencedetect @ 0x64fb938c8780] silence_start: 486.057",
    "[silencedetect @ 0x64fb938c8780] silence_end: 487.704 | silence_duration: 1.64639",
    "[silencedetect @ 0x64fb938c8780] silence_start: 514.239",
    "[silencedetect @ 0x64fb938c8780] silence_end: 515.247 | silence_duration: 1.0078",
    "[silencedetect @ 0x64fb938c8780] silence_start: 562.333",
    "[silencedetect @ 0x64fb938c8780] silence_end: 563.922 | silence_duration: 1.58912",
    "[silencedetect @ 0x64fb938c8780] silence_start: 566.578",
    "[silencedetect @ 0x64fb938c8780] silence_end: 568.161 | silence_duration: 1.58327",
    "[silencedetect @ 0x64fb938c8780] silence_start: 648.148",
    "[silencedetect @ 0x64fb938c8780] silence_end: 649.83 | silence_duration: 1.68209",
    "[silencedetect @ 0x64fb938c8780] silence_start: 652.016",
    "[silencedetect @ 0x64fb938c8780] silence_end: 653.575 | silence_duration: 1.55878",
    "[silencedetect @ 0x64fb938c8780] silence_start: 728.704",
    "[silencedetect @ 0x64fb938c8780] silence_end: 730.355 | silence_duration: 1.65184",
    "[silencedetect @ 0x64fb938c8780] silence_start: 732.618",
    "[silencedetect @ 0x64fb938c8780] silence_end: 734.176 | silence_duration: 1.55755",
    "[silencedetect @ 0x64fb938c8780] silence_start: 801.06",
    "[silencedetect @ 0x64fb938c8780] silence_end: 801.863 | silence_duration: 0.803084",
    "[silencedetect @ 0x64fb938c8780] silence_start: 834.998",
    "[silencedetect @ 0x64fb938c8780] silence_end: 836.608 | silence_duration: 1.60921",
    "[silencedetect @ 0x64fb938c8780] silence_start: 838.828",
    "[silencedetect @ 0x64fb938c8780] silence_end: 840.401 | silence_duration: 1.57247",
    "[silencedetect @ 0x64fb938c8780] silence_start: 915.205",
    "[silencedetect @ 0x64fb938c8780] silence_end: 916.912 | silence_duration: 1.70712",
    "[silencedetect @ 0x64fb938c8780] silence_start: 918.632",
    "[silencedetect @ 0x64fb938c8780] silence_end: 920.287 | silence_duration: 1.6546",
    "[silencedetect @ 0x64fb938c8780] silence_start: 995.323",
    "[silencedetect @ 0x64fb938c8780] silence_end: 996.91 | silence_duration: 1.58671",
    "[silencedetect @ 0x64fb938c8780] silence_start: 998.888",
    "[silencedetect @ 0x64fb938c8780] silence_end: 1000.53 | silence_duration: 1.63841",
    "[silencedetect @ 0x64fb938c8780] silence_start: 1027.03",
    "[silencedetect @ 0x64fb938c8780] silence_end: 1027.85 | silence_duration: 0.820771"
  ],
  "decision": "Can proceed to intro/outro/BGM packaging only after human visual sync spot-check of extracted frames/video samples.",
  "manual_qa_required": [
    "Watch early/mid/late checkpoints and part joins to confirm voice/subtitle sync.",
    "Confirm transitions are smooth and no heading image holds under following scene narration."
  ]
}