【问题标题】:Is it legal to have inconsistent frame rate in an mp4 (h.264/avc) video在 mp4 (h.264/avc) 视频中帧率不一致是否合法
【发布时间】:2016-05-07 14:33:54
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 你是在执行 ffmpeg 命令还是通过 API?
  • 是的,MP4 具有可变帧速率是合法的。
  • @Mulvya 除了合法之外,是否存在已知的播放器兼容性问题?正如我所提到的,我发现 Chrome 内置播放器存在问题。至于命令行或 API,如果它在现实世界中确实存在问题,并且需要修复,那么两个选项都在桌面上:1. 录制时使用 ffmpeg API 生成恒定 fps 2. 使用 VFR 录制,然后有后端服务器转码(使用 ffmpeg?)以注入丢失的帧。

标签: video ffmpeg mp4 h.264 mpeg


【解决方案1】:

是的,正如 Mulvya 已经提到的那样 mp4 支持可变帧速率。

您可以查看here 来检查包括mp4 在内的某些容器是否支持可变帧率。

至于复制或丢帧,您可以使用-vsync 选项进行一些实验。

例如,-vsync 1 允许复制/丢弃帧以准确实现请求的恒定帧速率。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多