B帧文件开头出现负DTS,怎样核对avoid_negative_ts的平移量
含B帧的文件开头出现负DTS,不必立即判为损坏。avoid_negative_ts可按策略平移前导时间戳;应比较平移前后PTS-DTS差与解码画面,确认改变的是时间原点,而不是压缩帧之间的呈现关系。
这组文件怎样比较
本题以两秒H.264原创片为源,分别用disabled与make_non_negative重封装MP4。源片启用固定B帧,本地首DTS为负零点二秒。这个受控负值来自重排序条件,不是传输丢包或客户文件报错的现场证据。
按原始结构逐项检查
-
先取每个包的PTS、DTS和time_base,确认前导负值出现在什么字段。不要把所有包中的负数一律截成零;逐包截断会破坏时间间隔,甚至把多个包压到同一解码时刻,与整体平移的含义完全不同。
-
再输出make_non_negative副本,记录首DTS不再为负,比较每包PTS减DTS的差值序列是否保持。本题时间基相同,可以直接比较这些整数差;跨刻度时应先换成同一有理数秒单位,不能复用未经换算的整数断言。
-
完整解码两份输出并比较逐帧摘要,确认内容序列未改变。若首PTS随DTS一起向后移动,这是整体平移的可观察结果;它不自动意味着观众多看了片头黑场,显示起点还受到容器与播放器解释,不在本题推断范围。
容易误读的地方
反例是用avoid_negative_ts修复中途非单调DTS。官方说明这里针对前导负时间戳,不能把它理解成通用排序器或坏片修复工具;遇到中部回跳应保留原始包序列,调查输入 discontinuity、拼接边界和具体封装要求。
下载与本地读回
disabled.mp4、generation.json、nonnegative.mp4、observed.csv、observed.json、source.mp4。
下载全部附件到同一个独立目录,用 python verify.py 运行本题独立核验脚本。依赖为Python 3.12.4、PATH中的FFmpeg及ffprobe 8.0.1;程序不联网、不连接设备,读取本题文件并在终端输出检查结果。本地实际执行回执保存实际命令、退出码和完整输出。
公开程序确认disabled副本首DTS为负,nonnegative副本非负,composition offset列表与解码帧摘要一致,且严格解码通过。没有测目标软件遇到负DTS的兼容性,也没有声称平移是本来文件必需的修复;原件始终保留。
命令已在原创短片上实际执行并读回文件。官方文档为滚动版本,本文所列选项已用本地8.0.1确认;未测试目标硬解、网络起播或现场实时性能。
把结果带回交付
交付时注明使用disabled、make_non_negative还是其他模式,以及实际首PTS和首DTS。若接收端要求从零起算,应先确认它指的是首呈现帧还是首解码包,二者可能不同;明确需求后再选择策略,避免为消除一个负号改坏节目定位。
相关背景见手机拍的视频放久了声音不同步,怎样先核对 VFR 与 CFR,还可从多媒体播放专题继续查找文件处理方法。需要核对实际工程的接收条件时,可携带本题文件与读回结果进行工程对接咨询。
一级依据
来源核对日期:2026-10-24。引用支持文件机制;原创输入的本地结果不代表客户素材或现场系统已经通过验收。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。