正在压缩MP4文件
本文关键字:文件 MP4 压缩 | 更新日期: 2023-09-27 18:29:08
我使用FFMPEG将JPG文件转换为MP4文件。它们是我可以用来进一步缩小这个MP4文件大小的任何压缩技术/标志/设置/开关吗。我曾使用gZIP来压缩这些文件的字节,但它实际上产生了一个更大的文件。
我正在使用C#
感谢
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/