正在压缩MP4文件

本文关键字:文件 MP4 压缩 | 更新日期: 2023-09-27 18:29:08

我使用FFMPEG将JPG文件转换为MP4文件。它们是我可以用来进一步缩小这个MP4文件大小的任何压缩技术/标志/设置/开关吗。我曾使用gZIP来压缩这些文件的字节,但它实际上产生了一个更大的文件。

我正在使用C#

感谢

正在压缩MP4文件

MP4是一种容器格式。根据您的ffmpeg配置,ffmpeg将使用编码器mpeg4用于MPEG-4第2部分视频或libx264用于H.264视频。


mpeg4

速率控制方法包括-qscale:v-b:v。这些是互斥的,因此您应该使用其中一个。

-qscale:v

设置一个恒定量化器,但一般用户只能认为"恒定质量"。有效范围为2-31,其中2是最高质量。

ffmpeg -i input -codec:v mpeg4 -codec:a libmp3lame -qscale:v 4 -qscale:a 5 out.mp4

-b:v

允许应用视频比特率。可用于针对特定的输出文件大小(文件大小=持续时间x比特率)。

ffmpeg -i input -codec:v mpeg4 -codec:a libmp3lame -b:v 512k -b:a 128k out.mp4

另请参阅:

  • Xvid/DivX/MPEG-4第2部分视频编码指南
  • MP3编码指南

libx264

速率控制方法包括-crf-b:v-qp,但对于绝大多数用户来说,-qp可以忽略。

-crf

恒定速率系数。可以将其视为-qscale:v的"智能"版本。范围为对数0-51。0表示无损(大文件),~18表示大致视觉无损,23表示默认值,51表示最差质量。

ffmpeg -i input -codec:v libx264 -crf 23 -preset medium -codec:a libfdk_aac -vbr 5 output.mp4

-b:v

允许应用视频比特率。可用于针对特定的输出文件大小(文件大小=持续时间x比特率)。两遍示例:

ffmpeg -y -i input -pass 1 -codec:v libx264 -preset medium -b:v 800k -an -f mp4 /dev/null
ffmpeg -y -i input -pass 2 -codec:v libx264 -preset medium -b:v 800k -codec:a libfdk_aac -b:a 128k output.mp4

另请参阅:

  • x264编码指南
  • AAC编码指南
  • CRF指南(x264中的恒定速率因子)

压缩一个已经压缩的文件通常不会有太大区别(而且可能会导致文件更大)。

因此,如果你想要一个更小的文件,我建议你改变mp4文件的压缩质量(无论你使用什么技术,我认为你都有这个选项)。

如果您正在使用命令行工具,您可以使用视频比特率来减小文件大小:

ffmpeg -f your_image_files*.jpg -vcodec mpeg4 -b 1200kb your_video.mp4

只需将1200kb替换为较低的值,您的文件大小就会更小

如果你想在C#中完成这一切,并查看编码进度,你可以使用这个用于ffmpeg的.Net包装器:http://www.ffmpeg-csharp.com/