在mp4(h.264 / avc)视频中使用不一致的帧速率是否合法

时间:2016-01-29 18:34:55

标签: video ffmpeg mp4 h.264 mpeg

我正在构建一个不会以恒定速率变化的内容的视频(手机屏幕虚拟显示),实际上我只有在有这样的变化时才会收到帧。根据标准在视频中具有不一致的帧速率是合法的吗?例如,PTS为0s,0.066s,0.1333s,0.2s的帧,然后是20s的下一帧,等等?

似乎有些玩家(Chrome)正在努力正确地回放它,当遇到这样的时间差时,它有时会从视频开头显示帧。我应该自己复制最后一帧以保持恒定的帧速率吗?有没有办法指示编解码器(ffmpeg)注入"跳过帧"当检测到这样的间隙时,以恒定的速率。

由于

2 个答案:

答案 0 :(得分:1)

是的,因为Mulvya已经提到 mp4 支持可变帧速率。

您可以查看here以检查包含 mp4 的某些容器是否支持可变帧速率。

对于复制或丢弃框架,您可以使用-vsync选项进行一些实验。

例如-vsync 1允许复制/删除帧以实现所请求的恒定帧速率。

答案 1 :(得分:0)

MP4具有可变帧率是合法的,但正如您所经历的那样,非常不规则的PTS模式可能会导致播放问题。

要转码为CRF MP4,这是ffmeg的默认多路复用模式,请通过CLI使用:

ffmpeg -i input.mp4 -crf 18 -c:a copy -fflags +genpts output.mp4