我正在构建一个不会以恒定速率变化的内容的视频(手机屏幕虚拟显示),实际上我只有在有这样的变化时才会收到帧。根据标准在视频中具有不一致的帧速率是合法的吗?例如,PTS为0s,0.066s,0.1333s,0.2s的帧,然后是20s的下一帧,等等?
似乎有些玩家(Chrome)正在努力正确地回放它,当遇到这样的时间差时,它有时会从视频开头显示帧。我应该自己复制最后一帧以保持恒定的帧速率吗?有没有办法指示编解码器(ffmpeg)注入"跳过帧"当检测到这样的间隙时,以恒定的速率。
由于
答案 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