我将在服务器中异步编码用户上传的不同视频。我看到this pos t,根据这个,这是如何对两个传递编码进行编码:
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 555k -pass 1 -c:a libfdk_aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 555k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4
我注意到-pass 1和-pass 2标志。但我尝试通过给它一个-pass 2标志来编码视频,而不首先编码-pass 1标志。虽然我有这个警告,但无论如何都会执行:
第二次传球的帧数比第一次传球次数多
所以,我关注的是ffmpeg将如何知道哪一个是第一遍,以便它可以进行第二次传递编码?并且由于许多视频将同时上传,我无法将它们全部保存在/ dev / null中,它不会将它们替换为另一个。那我该怎么办呢?
非常感谢您的帮助和指导。
谢谢。
Upadate
ffmpeg cmd:
ffmpeg -i input.mp4 -codec:v libx264 -tune zerolatency -profile:v main -preset medium -b:v 1500k -maxrate 1500k -bufsize 15000k -s hd720 -threads 0 -pass 1 -an -f mp4 /dev/null
ffmpeg -i input.mp4 -codec:v libx264 -tune zerolatency -profile:v main -preset medium -b:v 1000k -maxrate 1000k -bufsize 10000k -s hd720 -threads 0 -pass 2 -codec:a libfdk_aac -movflags +faststart output.mp4
答案 0 :(得分:10)
使用2遍编码时,第一遍将使用log
命名约定创建ffmpeg2pass-X
个文件,其中X
是流编号。
您可以使用-passlogfile
选项为文件设置自定义前缀。例如:
-passlogfile your_unique_video_id
这将为流0创建名为your_unique_video_id-0.log
的文件。