视频文件能打开却播到一半卡住,怎样做完整解码预检
能打开文件只说明容器头与开头可读。离线预检应完整解码所有需要交付的音视频流,保存退出码、错误输出和末端进度,再回看报错前后片段;这仍不等于目标硬件实时播放合格。
判断前提与适用边界
损坏可能位于中部GOP、尾部索引或某条不常用音轨,播放器试播几秒看不出来。解码器有时能容错,退出码为零也不代表没有警告或画面缺陷。另一方面,离线解码慢于实时只是这次软件路径的性能现象,不能直接推断GPU硬解表现。把文件完整性、画质审阅与实时负载分成三张记录。
本轮只完成本地生成、元数据与计算夹具验证,没有接入目标播放器、GPU输出链或现场音响。媒体生成固定为FFmpeg 8.0.1,表格及图案由Python 3.12.4生成;原始输入在附件中,不含第三方版权影片。
按同一条件执行
-
在副本上核对SHA-256,保存ffprobe流列表;明确哪些流要验,不要默认只查第一条视频。
-
用ffmpeg -v warning -i input.mp4 -map 0:v? -map 0:a? -f null -完整读取;重定向stderr和进度到文件,记录退出码。
-
另做停止即报错的严格运行可以使用-xerror;把容错运行与严格运行结果分开,不把中途停止当完整通过。
-
将错误时间点、人工审阅时间点和目标机回放点写入索引;若日志只有包位置没有PTS,保留原日志并标记待定位。
ffmpeg -v warning -i input.mp4 -map "0:v?" -map "0:a?" -f null - 2> decode.log
$LASTEXITCODE
原始输入与判断示例
下面是合成示例,非现场实测。现场表中的空白表示未采集,不能当作零、正常或通过。
| 合成日志 | 判断 | 下一步 |
|---|---|---|
| 退出码0、无警告、读到末端 | 仅离线解码通过 | 目标机回放 |
| 退出码非0、位置120秒 | 预检失败 | 回看附近并重取源文件 |
| 日志缺末端进度 | 测试未完成 | 查中断而非签字 |
附件内的decode-log.txt明确标成合成失败片段,配套JSON给出120秒审阅点;不是本机对客户文件的报错。本文生成的原创短样片会另存真实完整解码回执,可用于验证命令能走完整条路径。正式交付要换成实际源文件并重新计算摘要。
下载夹具并形成交付记录
下载专项输入与预期JSON和空白记录CSV。JSON保留原始输入、预期、记录字段及未测范围;CSV用于逐轮填写,原始日志、截图或仪表文件用稳定文件名关联。本主题还提供decode-log.txt、decode-original-testsrc-execution.json、decode-original-testsrc-ffprobe.json、decode-original-testsrc.mp4。
本表保留 input_hash, stream_index, exit_code, last_pts 等字段;先按上表核对合成输入,再将目标环境数据另存一份。未采集的字段留空,失败记录与原始文件一并保留,避免下一轮无法复现。
误判与失败路径
不要用“修复容器后能打开”代替全片重测;不要丢弃stderr只保存退出码;不要只验剪辑软件导出的代理文件。发现坏帧先保留原件,避免转码掩盖证据后无法追查源文件与传输副本的差异。
基础背景见播放卡顿掉帧?展厅 4K 大屏播控 8 步优化排查,相关流程汇总在多媒体播放专题。需要在SoftPlayer上执行这项测试时,按受测版本文档填写配置与支持情况。
一级来源与核验范围
FFmpeg ffprobe:Main options、JSON writer,核对日期2026-10-23。本文协议与合成样例为独立设计;来源中的机制说明不代表附件已完成现场验收。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。