我测试了该问题的其他大多数建议答案。测试数据结论如下。这些是我测试过的建议答案:
(BR)使用以下方法修改比特率:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR)使用以下方法改变恒定速率因子:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ)使用以下方法更改视频屏幕大小(例如,将其更改为像素大小的一半):
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL)使用以下命令将H.264配置文件更改为“基准”:
ffmpeg -i $infile -profile:v baseline $outfile
(DF)使用默认的ffmpeg处理,方法是:
ffmpeg -i $infile $outfile
数据
- “尺寸”-转换后的视频相对于原始像素的百分比像素大小。
- “比特率”-原始视频和转换后的视频的比特率。
- “定义”-视频的像素大小。
- “转换”-转换视频的时间(以秒为单位)。
我使用提出的方法计算了(BL)的目标比特率。
===文件A-节点如何帮助推进Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
===文件B-将GraphQL与角度一起使用_作者-Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
结论
(SZ)方法无疑是最快的方法。它快了2倍到4倍。对于高清视频,这可能是一个很大的问题,因为所有其他方法的转换时间都比视频的实际长度长!例如,(CR)方法花费了53分钟来转换21分钟的视频。
如果视频的分辨率大于要显示的屏幕的分辨率,则(SZ)方法绝对是最佳方法。例如,如果您的手机只能显示1080p图片,则向其发送3840x2160的视频只是浪费。最好将其大小减半至1080p。
一些建议的答案实际上增加了某些视频的大小。例如,(BR)方法将1080p样本的大小增加了一倍以上。但是,它确实使2160p尺寸缩小了三分之一。对于高清样本,(CR),(BL)和(DF)方法都增加了视频的大小。
正确(或最佳)答案
始终最好首先将分辨率降低到目标显示器支持的最大分辨率。
如果要进一步减小文件大小,则取决于个人选择。您可以减少信息内容或增加压缩率。
如果不是您所关心的问题,则可以进一步降低分辨率。
如果视频不包含快速动作场景,则可能需要降低帧频。
如果您拥有强大的处理器,而只有空间是唯一的问题,则可以提高压缩率。
比特率是多种因素的组合。因此,仅告诉ffmpeg降低比特率可能不会给您想要的结果。
降低信息含量的另一种方法是降低色彩深度。如何进行此操作尚未讨论。
ffmpeg
手册页显示了一个-fs
限制输出大小的选项,是否可以ffmpeg -i in.avi -fs 100M out.avi
正常工作?