我正在使用 ffmpeg 在 Python 脚本中将视频旋转 90 度或 180 度。它工作得很好。但是,我很好奇为什么输出文件的字节数比输入文件少。
以下是我使用的命令:
180度:
ffmpeg -i ./input.mp4 -preset veryslow -vf "transpose=2,transpose=2,format=yuv420p" -metadata:s:v rotate=0 -codec:v libx264 -codec:a copy ./output.mp4
90度:
ffmpeg -i ./input.mp4 -vf "transpose=2" ./output.mp4
例如,GoPro Hero 3 MP4 文件最初为 2.0 GB。生成的输出文件为 480.9 MB。另一个 GoPro 文件是 2.0,其生成的文件是 671.5 MB。这可能是因为 GoPro 文件是 2.0 但包含空白空间,有点像某些 NTFS 文件系统如何制作最小的 4k 文件,即使其中的字节数较少?
如果这不是 GoPro Hero 3,我如何将文件旋转 90 或 180 度但确保输出文件大小相同?或者,是否会丢失数据?数据丢失是否与格式有关?
请注意,视频的质量似乎没有损坏,这很好。所以,我有兴趣更多地了解为什么会发生这种情况,然后我可以阅读与此相关的 ffmpeg 文档部分。
谢谢!