压缩MP4文件

时间:2013-08-27 14:32:02

标签: c# ffmpeg compression mp4

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

我正在使用C#

由于

2 个答案:

答案 0 :(得分:2)

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

允许应用视频比特率。可用于定位特定的输出文件大小(filesize = duration x bitrate)。

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

另见:


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

允许应用视频比特率。可用于定位特定的输出文件大小(filesize = duration x bitrate)。两遍示例:

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

另见:

答案 1 :(得分:-1)

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

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

如果您使用的是命令行工具,则可以使用视频比特率来缩小文件大小:

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

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

如果您想在C#中完成所有操作,并查看编码进度,可以将此.Net包装用于ffmpeg: http://www.ffmpeg-csharp.com/