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