使用 ffmpeg 旋转视频很慢

使用 ffmpeg 旋转视频很慢

我正在使用 ffmpeg 将视频旋转 90 度,因此输入此代码

ffmpeg -i in.mp4 -vf "transcode=1" out.mp4

这就像重新编码一样慢。我添加了 -c copy 以使其更快,但出现了两个函数不能同时使用的错误。

ffmpeg -i in.mp4 -c copy -vf "transcode=1" out.mp4

答案1

它变慢的原因不是因为旋转,而是因为您对视频进行了重新编码。

当您未指定输出视频编解码器时,mp4 的默认设置是 H.264(libx264)预设介质,这取决于分辨率和硬件,可能会很慢。

我看到您尝试通过指定“-c copy”来解决这个问题,但您不能:旋转视频意味着修改它,因此无法复制 H.264 流。对于您来说,重新编码不是一种选择。

您可以尝试使用其中一个更快的预设:

ffmpeg -i in.mp4 -vf "transcode=1" -vcodec libx264 -preset veryfast -acodec copy out.mp4

但质量/文件大小会受到影响。

https://stackoverflow.com/questions/25031557/rotate-mp4-videos-without-re-encoding,有一个关于更改元数据以便玩家可以旋转视频的有趣答案。

答案2

ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4

这对我来说有用,但不是对所有视频播放器都有效。但它比其他命令快得多。它只是更改了旋转标志。(请注意,特殊角度不能与此一起使用)。

答案3

我建议rotate代替transcode

ffmpeg -i input_video -vf "rotate=PI/2" output_video

另请参阅这里这里了解更多信息。

希望这可以帮助!

相关内容