如何使用ffmpeg减少输出文件大小?

如何使用ffmpeg减少输出文件大小?,ffmpeg,Ffmpeg,我正在尝试创建一个具有非常特定用例的工具:我有两个JPEG文件,我想创建一个输出视频,首先显示一个图像n秒,然后交叉淡入另一个图像,然后显示第二个图像n秒(用于显示前/后)。我有这个工作,但我最好的结果是到目前为止10秒的视频文件大小为842k。我希望尽可能小,而不失去明显的质量 我是一个ffmpeg新手,在阅读了几次文档之后,我不确定最好的策略是什么。图像在第一个或第二个n秒钟内不会改变这一事实是可以利用的吗?还有其他更一般的策略吗 我使用的是ffmpeg 3.4.1。以下是我当前用于测试的命

我正在尝试创建一个具有非常特定用例的工具:我有两个JPEG文件,我想创建一个输出视频,首先显示一个图像n秒,然后交叉淡入另一个图像,然后显示第二个图像n秒(用于显示前/后)。我有这个工作,但我最好的结果是到目前为止10秒的视频文件大小为842k。我希望尽可能小,而不失去明显的质量

我是一个ffmpeg新手,在阅读了几次文档之后,我不确定最好的策略是什么。图像在第一个或第二个n秒钟内不会改变这一事实是可以利用的吗?还有其他更一般的策略吗

我使用的是ffmpeg 3.4.1。以下是我当前用于测试的命令行:

cat *.jpg | ffmpeg -f image2pipe -i - -vf 'zoompan=d=(4+2)/2:fps=1/2,framerate=25:interp_start=0:interp_end=255:scene=100,scale=1280:-2' -c:v libx264 -crf 27 out.mp4

最简单的建议是:

  • 使用较慢的编码预设进行有效压缩,例如
    -preset veryslow

  • 使用更现代的编码器,如
    -c:v libx265

此外:

  • format=yuv420p
    添加到过滤器链的末尾,以实现播放器兼容性

试试这个,我用它来制作1280x720持续时间01:18:55的视频mp4文件

大小为493 MB(517.313.413字节)之前;-->大小197MB(206.783.999字节)之后

之后,视频中的文本仍然可读,不会模糊。因此,它将节省您的空间,但在视觉上仍然可以接受

但是这个过程非常缓慢,你应该耐心,或者在工作时把它放在后台

ffmpeg -i "webinar.mp4" -vcodec libx264 -preset veryslow -crf 30 "webinar-r02.mp4"

最低挂果是添加
-preset veryslow
和/或
-c:v libx265
。谢谢!尝试使用libx265将文件大小减半,但QuickTime不喜欢该文件。但是veryslow预设将其设置为495k,而不需要额外的处理时间。通常,对于较小的尺寸,您需要降低分辨率、降低帧速率、使用不同的编解码器(或将参数调整为现有参数),或降低“比特率”(在您的情况下,crf值会影响比特率)。德国劳埃德船级社!你能确认我添加的格式正确吗?我试过这个,QuickTime仍然抱怨:ffmpeg-f image2pipe-I--vf'zoompan=d=(4+2)/2:fps=1/2,帧速率=25:interp_start=0:interp_end=255:scene=100,scale=1280:-2,format=yuv420p'-c:v libx265-crf 27-预设veryslow out。mp4@DaveBurns我觉得不错。尝试添加
-tag:v hvc1
输出选项。我目前无法测试。QuickTime能否播放h265编码的视频@DaveBurns尝试使用VLC oder Media Player Classic(MPC)播放,以确保视频文件有效。如果QuickTime是一个问题,并且您不能使用其他播放器,那么您应该返回x264并使用CRF值来找到质量和文件大小之间的良好平衡(trac.ffmpeg.org/wiki/Encode/H.264)。一些有趣的结果:QuickTime可以播放h265,但需要@LordNeckbeard建议的标记。如果使用h264,则使用veryslow预设几乎将文件减半。在不使用veryslow的情况下使用h265可减少40-50k。但是使用veryslow和h265将40-50k添加到了背面。目前我最好的结果是h265(带标签),并且没有使用veryslow预设。