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"
  • 為了x11搶使用-video_size代替-s-framerate代替-r
  • 為了阿薩使用-channels而不是-ac.
  • 只有過時的版本需要-strict -2(或-strict experimental)使用-c:a aac.

相關內容