问题描述
嘿伙计们,我正在学习开发一个将视频转换为 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
,如果您有时间花时间以获得更好的质量,您可以将其设置为 slow
或 slower
。
有关详细信息,请参阅 FFMPEG 自己的 H.264 Encoding Guide。