我使用FFMPEG将JPG文件转换为MP4文件。是否可以使用任何压缩技术/标志/设置/开关来进一步减小此MP4文件的大小。我曾使用gZIP来压缩这些文件的字节,但它实际上导致了一个更大的文件。
我正在使用C#
由于
答案 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
费率控制方法包括-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/