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.

Связанный контент