影片章节跳到错误秒数,怎样核对FFmetadata的TIMEBASE

2026-10-24

FFmetadata章节START和END是按TIMEBASE解释的整数,不能只读数字猜秒数。TIMEBASE为1/1000时,一千表示一秒;若写为1/1,相同一秒应写一。边界表达必须和时间单位一起保存。

这组文件怎样比较

附件用两套不同刻度描述相同的两章:第一章零到一秒,第二章一到两秒。它们分别封装到同一原创视频的MKV副本,章名相同。章节只是导航元数据,添加章节不会自动把视频剪成两个文件。

按原始结构逐项检查

  1. 先检查FFMETADATA版本头与CHAPTER节,逐章读取TIMEBASE、START和END。不要拿视频流的time_base覆盖章节单位,两者是不同结构;FFmpeg文档还规定未写章节时间基时有自己的默认解释,因此省略字段不等于默认秒。

  2. 将整数边界乘章节有理数时间基,再核对相邻章的关系。本例第一章结束等于第二章开始,没有重叠或间隙;真实工程是否允许空隙需由内容设计决定,不能一律自动拉齐。写入前保留制作方确认的章名与边界来源。

  3. 封装时显式指定map_chapters来源,再用show_chapters读取输出。封装器可能转换刻度,整数值不必与输入保持相同,但换算后的秒数及标题应一致;只比较原始START字符串会把合法的重新量化误报为章节被改。

容易误读的地方

反例是把毫秒数一千放进秒刻度,章节便跳到千秒,短片甚至根本到不了。另一个错误是把章名清单写进普通文本却没在封装时导入,文件本身仍没有章节;输入清单存在不代表输出元数据写入成功。

下载与本地读回

generation.json、milliseconds.ffmeta、milliseconds.mkv、observed.csv、observed.json、seconds.ffmeta、seconds.mkv、source.mkv。

下载全部附件到同一个独立目录,用 python verify.py 运行本题独立核验脚本。依赖为Python 3.12.4、PATH中的FFmpeg及ffprobe 8.0.1;程序不联网、不连接设备,读取本题文件并在终端输出检查结果。本地实际执行回执保存实际命令、退出码和完整输出。

公开脚本读取两份MKV,确认输出章节标题与秒数完全一致,第二章从1.000000秒开始,音视频完整解码通过。没有测试播放器是否显示章节菜单,也没有测点击章节后的关键帧寻址精度,这些结果应另外记录。

命令已在原创短片上实际执行并读回文件。官方文档为滚动版本,本文所列选项已用本地8.0.1确认;未测试目标硬解、网络起播或现场实时性能。

把结果带回交付

交接应列出章节序号、名称、精确边界、输入时间基和输出读回值。重剪影片后不要只平移视频而沿用旧章节;先按内容事件确认新边界,再封装和回读。接收端若不支持章节,可提供外部导航清单,但应明确它属于另外的使用方式。

相关背景见展厅视频编码与封装怎么选(H.264 / H.265 / HAP),还可从多媒体播放专题继续查找文件处理方法。需要核对实际工程的接收条件时,可携带本题文件与读回结果进行工程对接咨询。

一级依据

来源核对日期:2026-10-24。引用支持文件机制;原创输入的本地结果不代表客户素材或现场系统已经通过验收。

需要展厅软硬件方案或定制开发?

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。