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