Создайте одно видео с разделенным экраном, отдельные аудиопотоки и миниатюру из результирующего видео с разделенным экраном — все за один проход

Я использую ffmpeg для создания нескольких отдельных видео с разделенным экраном из двух отдельных видео. В 2 видео есть звук, поэтому я хочу извлечь аудиопотоки 2 видео в виде 2 отдельных mp3, а также создать миниатюру из готового видео с разделенным экраном. Можно ли сделать эти 3 действия за один проход?

Вот код, который я бы использовал для создания видео с разделенным экраном:

ffmpeg -i input0.mov -i input1.mov -filter_complex "[0]scale=640x360[v0];[1]scale=640x360[v1];[v0][v1] xstack=inputs=2:layout=0_0|w0_0|[v]" -map "[v]" -an output.mp4

Вот код, который я бы использовал для создания миниатюры результирующего видео с разделенным экраном:

ffmpeg -y -i input.mp4 -vframes 1 OUTPUT.jpg

Вот код, который я бы использовал для создания одного mp3

ffmpeg -i input0.mov output0.mp3

Ответы (1)

Комбинированная команда:

ffmpeg -i input0.mov -i input1.mov -filter_complex "[0]scale=640x360[v0];[1]scale=640x360[v1];[v0][v1]hstack,split[video][image]" -map "[video]" output.mp4 -map 0:a audio0.mp3 -map 1:a audio1.mp3 -map "[image]" -frames:v 1 image.jpg

Для 4 видео в макете 2x2:

ffmpeg -i input0.mov -i input1.mov -i input2.mov -i input3.mov -filter_complex "[0]scale=640x360[v0];[1]scale=640x360[v1];[2]scale=640x360[v2];[3]scale=640x360[v3];[v0][v1][v2][v3]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0,split[video][image]" -map "[video]" output.mp4 -map 0:a audio0.mp3 -map 1:a audio1.mp3 -map 2:a audio2.mp3 -map 3:a audio3.mp3 -map "[image]" -frames:v 1 image.jpg
Ваш ответ работает для видео с разделенным экраном и 2 отдельных mp3, если я исключаю: «image.jpg» в конце. К сожалению, если я добавляю «image.jpg», это делает видео и аудио длиной около 1 кадра и не создает эскиз готового результирующего видео с разделенным экраном, просто input1.mov. Есть идеи?
@BenHardy Смотрите обновленный ответ. Не удалось протестировать первую итерацию, и я забыл несколько вещей.
Это работает отлично. Можно ли этот код адаптировать для 4 видео? </>
@BenHardy Смотрите обновленный ответ.