如何获得类似于 youtube 的 480p 和 1080p 视频的 ffmpeg 配置?我有一个功能,但输出质量太低

问题描述

嘿伙计们,我正在学习开发一个将视频转换为 youtube 质量(或足够接近)480p 和 1080p 的网站,我对 ffmpeg 不太熟悉,并且在其文档中苦苦挣扎。

我有这些功能

video_480p      = subprocess.call([FFMPEG_PATH,'-i',input_file,'-codec:v','libx264','-crf','20','-preset','medium','-b:v','1000k','-maxrate','-bufsize','2000k','-vf','scale=-2:480','-codec:a','aac','-b:a','128k','-strict','-2',file_480p])

同样我还有一个功能

new_video       = subprocess.call([FFMPEG_PATH,'scale=-2:1080',output_file])

这两个功能都会对视频进行转码,但会返回低质量的视频,谁能为我提供与 YouTube 质量相似或接近的 480p 和 1080p 的正确设置?

谢谢

解决方法

我的猜测是您的 -maxrate 论点严重限制了质量。尝试删除除 -crf 20 和缩放选项之外的所有内容。为了获得更高的质量,降低它的值(技术范围:0 = 无损,但文件很大;51 = 质量最差,文件最小)。实际值为 23(默认值),“视觉无损”值为 17-18。第二个刻度盘是 -preset,如果您有时间花时间以获得更好的质量,您可以将其设置为 slowslower

有关详细信息,请参阅 FFMPEG 自己的 H.264 Encoding Guide

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...