ffmpeg,如何在捕获时创建两个输出文件?

ffmpeg,如何在捕获时创建两个输出文件?

我有一个屏幕录制项目,可以通过以下命令行成功将桌面视频和音频捕获到 MP4 中:

ffmpeg -report -y -f x11grab -s 1920x1080 -r 5 -thread_queue_size 3000 -i :44
    -f alsa -ac 1 -thread_queue_size 3000 -i hw:Loopback,1,0 -c:v libx264
    -preset veryfast -crf 28 -movflags +faststart -pix_fmt yuv420p -c:a aac
    -strict -2 video_and_audio_output.mp4

效果很好。我想要的是同时创建一个仅包含音轨的附加输出,而不必对文件进行第二次传递。这可能吗?如果可以,有没有关于如何设置参数的线索?

答案1

使用三通复用器

ffmpeg -f x11grab -video_size 1920x1080 -framerate 5 -thread_queue_size 3000
    -i :44 -f alsa -channels 1 -thread_queue_size 3000 -i hw:Loopback,1,0 -map 0
    -map 1 -c:v libx264 -preset veryfast -crf 28 -pix_fmt yuv420p -c:a aac -f tee
    "[select=v,a:movflags=+faststart]video_and_audio_output.mp4|[select=a:movflags=+faststart]audio.m4a"
  • 为了x11grab使用-video_size而不是-s-framerate而不是-r
  • 为了阿尔萨-channels代替-ac
  • 只有过时的版本才需要-strict -2(或-strict experimental)用 进行编码-c:a aac

相关内容