我使用 FFMPEG 将 JPG 文件转换为 MP4 文件。它们是我可以用来进一步减小此 MP4 文件大小的任何压缩技术/标志/设置/开关吗?我曾使用 gZIP 压缩此文件的字节,但它实际上生成了一个更大的文件。
我正在使用 C#
谢谢
最佳答案
MP4 是一种容器格式。根据您的 ffmpeg 配置,ffmpeg 将使用编码器 mpeg4
对于 MPEG-4 Part 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
另见:
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
另见:
关于c# - 压缩 MP4 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468334/