# V12.4.6 S0 视频解码清单 本目录只保存复现 V12.4.6 S0 视频帧 cache 所需的数据清单和解码合同,不包含解码后的 233 GB shard。 ## 文件 - `decode_manifest.jsonl.gz`:178,490 个成功视频的 canonical 顺序、相对路径、精确采样帧下标、FPS、总帧数、JPEG 大小与 CRC32。 - `failures.jsonl`:原始构建中跳过的 2 个视频。 - `metadata.json`:原始 cache 的数据合同和统计。 `video_path` 均相对于本地 `LLaVA-Video-178K/` 数据根目录。解码后必须保持 manifest 的行顺序,训练时的 `DistributedSampler(seed=42)` 依赖该顺序。 ## 解码合同 1. 使用 PyAV 读取视频,video stream 设为单线程。 2. 直接使用 manifest 中的 32 个 `frame_indices`。这些下标对应全时长均匀采样:`np.linspace(0, total_frames - 1, 32, dtype=int)`。 3. 将目标帧转为 RGB24,并以 Pillow `BICUBIC` 直接缩放到 `384 x 384`。 4. 按帧序排列为 `2 x 16` contact sheet,保存为 JPEG,`quality=95`。 5. 跳过 `failures.jsonl` 中的两个视频。 预期结果为 178,490 条成功记录和 2 条失败记录。`metadata.json` 中的 `index_sha256` 对应原始未脱敏 cache index,不对应本目录的 portable manifest。 读取示例: ```bash gzip -dc data/12.4.6/decode_manifest.jsonl.gz | head -n 1 ```