如何用FFmpeg获取MP4容器视频流的偏移量(无法使用ffprobe)
获取MP4视频流时间偏移量(FFmpeg 3.1.2,无ffprobe)
你提到用ffmpeg -i input.mp3 -itsoffset 1 -t 3 -i input.mp4 -c:v copy output.mp4给视频流添加了1秒偏移,现在需要在无法使用ffprobe、FFmpeg版本为n3.1.2的前提下获取这个偏移值。
默认的ffmpeg -i或轻量命令只会输出全局容器信息,不会显示单个流的时间偏移(也就是start_time参数)。下面是两种适合旧版FFmpeg的方法:
方法1:用trace日志提取流的start_time
执行以下命令,它会输出详细的追踪日志并过滤出和流时间相关的内容:
ffmpeg -i output.mp4 -v trace -c copy -map 0:v -f null - 2>&1 | grep -A5 -B5 "start_time"
在输出结果里,你会找到对应视频流的start_time字段,值应该为1.000000(也就是你设置的1秒偏移)。这个字段直接表示视频流相对于容器时间轴的起始偏移量。
方法2:导出容器元数据结构
使用-dump参数可以输出MP4容器的完整结构信息,其中包含每个流的时间属性:
ffmpeg -i output.mp4 -dump 2>&1
在输出的大量内容中,查找视频流对应的stts(时间到样本)或stsc(样本到chunk)相关的结构,或者直接搜索start关键词,就能找到视频流的起始偏移值。
注意事项
- 因为FFmpeg 3.1.2版本较旧,部分现代参数可能不支持,但上面两个命令在该版本中是兼容的。
- 所有命令需要捕获标准错误输出(
2>&1),因为FFmpeg的日志默认输出到stderr。
内容的提问来源于stack exchange,提问作者Maxime Dupré
相关产品推荐
相关产品推荐

