FFmpeg:基于时间戳列表为可变帧率视频设置PTS值
需求可以实现,具体操作如下
完全可以通过ffmpeg达成你的目标:以流复制方式将无容器H.264封装到MKV,同时应用自定义毫秒级时间戳,精准保留可变帧率。
操作步骤
1. 整理时间戳文件
将毫秒级时间戳转换为秒为单位的数值,每行对应一帧,顺序必须和H.264流的帧顺序严格一致。比如原时间戳是100ms、250ms、400ms,就写成:
0.100 0.250 0.400 ...
将内容保存为timestamps.txt。
2. 执行ffmpeg封装命令
用以下命令完成封装,全程流复制视频流,应用自定义时间戳:
ffmpeg -i input.h264 -read_timestamps timestamps.txt -c:v copy -f matroska output.mkv
关键说明
-read_timestamps参数会强制ffmpeg使用文件中的时间戳作为每帧的PTS,完全替换原流的时间信息-c:v copy确保视频流直接复制,不重新编码,既保证画质又提升效率- MKV容器原生支持可变帧率,会根据PTS自动计算帧间隔,精准保留你设定的帧率变化
- 必须保证时间戳文件的行数和H.264流的帧数完全匹配,否则会出现帧时间戳错位的问题
内容的提问来源于stack exchange,提问作者DanWheeler
相关产品推荐
相关产品推荐

