以 30fps 播放 60fps 的视频

以 30fps 播放 60fps 的视频

我用 GoPro 录制了一段 60fps 1080p 视频,在 mpv(和其他媒体播放器)上播放时非常不流畅。我该如何让 mpv 每隔一帧就丢帧,以获得更流畅的视频?

或者,有没有什么快速的方法将视频转换为 30fps?

答案1

回答问题的这部分:“或者,有没有快速的方法将视频转换为 30fps”。

经过这个答案在视频处理中应该可以“无损地”丢弃一些 B 帧和 P 帧,而无需缓慢地重新编码。最初在这里提出执行如下:

ffmpeg -discard noref -i input.mp4 -c copy -vsync 0 reduced.mp4

第二个链接声称它支持 h264。由于 h265 支持正在逐个功能地集成到 ffmpeg 中,我手头的 ffmpeg 4.2.4 暂时无法为 h265 实现此功能。


更新:实际上,mpv 可以直接传递此 lavc 选项。它甚至适用于 h265 文件:

mpv --vd-lavc-skipframe=[nonref|bidir|nonkey]
  • “--vd-lavc-skipframe=nonref”似乎没有跳过大量的帧
  • “--vd-lavc-skipframe=bidir”跳过所有 B 帧,每秒仅留下几帧
  • “--vd-lavc-skipframe=nonref”仅保留 I 帧,将视频变成幻灯片

摘要:它无法达到 30 FPS,但它允许在较旧的硬件上观看低动作 h265@60 视频。

答案2

尝试mpv --framedrop=vo <video>。这应该能满足您的要求。如果您查看 mpv 手册并搜索framedrop,您还会看到还有一些其他选项(“不推荐”)。我可以想象这--framedrop=decoder可能会有所帮助,例如,如果您的 PC 解码视频的速度太慢。

相关内容