ffmpeg 无损 mp4 到图像序列的转换并再次返回 mp4 有损但你可能没有注意到无损

问题描述

我已经在谷歌上浏览了几个小时,但找不到任何关于此的信息。 我真的很难在没有任何质量损失的情况下将 mp4 的帧提取到图像序列中。 我需要能够再次将图像序列转换回 mp4 并且没有质量损失。 我这样做的目的是基本上删除所有帧的一半,将 60fps mp4 转换为 30fps。 以前我发现这样做的唯一另一种方法是创建一个占用大量磁盘空间的原始比特流,我不想要那样。您可以找到该帖子 here。任何可以帮助我实现这一目标的东西,如果您能分享,我将不胜感激。

解决方法

1.输出图像

TIFF 是一种无损图像格式,可以支持 YUV 色彩空间:

ffmpeg -i input.mp4 images_%04d.tif

2.编码视频

有损(但你可能没有注意到)

ffmpeg -framerate 25 -i images_%04d.tif -crf 17 -vf format=yuv420p output.mp4
  • 技术上不是无损的,但如果有足够的位,它可以减少 generation loss 的影响,并且可以看起来“视觉无损”。当用户说他们想要“不损失”时,这通常是他们真正想要的。

  • 这假设您的文件是连续的。如果没有,那么您可以在 Linux/macOS 上使用 ffmpeg -pattern_type glob -i "*.tif" ...

无损

ffmpeg -framerate 25 -i images_%04d.tif -crf 0 output.mp4
  • 文件大小将巨大,因为它是无损的,您的播放器可能不喜欢它。

  • 这假设您的文件是连续的。如果没有,那么您可以在 Linux/macOS 上使用 ffmpeg -pattern_type glob -i "*.tif" ...


更多信息