Как выполнить муксинг и демуксинг видео через ffmpeg

Как выполнять муксинг и демуксинг видео через FFmpeg в Ubuntu?

Выполним муксинг файлов audio.mp3 -i video.avi в output.avi без перекодирования (если в видео-файле нет своей звуковой дорожки):

ffmpeg -i audio.mp3 -i video.avi -acodec copy -vcodec copy output.avi

С маппингом (если в видео уже есть какой-то звук и его надо перезаписать):

ffmpeg -i audio.mp3 -i video-with-audio.avi -map 0:0 -map 1:0 -acodec copy -vcodec copy -shortest output.avi

Demux (демуксинг): Вынимаем аудиодорожку #1 из видео-файла в отдельный wav-файл.

for i in *.mp4; do ffmpeg -i "$i" "`basename "$i" .mp4`.wav" -acodec pcm_s32le; done;

Или через башизм (вместо использования basename):

for i in *.mp4; do ffmpeg -i "$i" "${i%.*}.wav" -acodec pcm_s32le; done;

Вынуть только видео-дорожку, звук игнорировать вообще

for i in *.avi; do ffmpeg -i "$i" "`basename "$i" .avi`.mp4" -an -vcodec copy; done;

Mux (муксинг) Для всех mp4-файлов: берём аудио из wav файла с тем же именем, видео из mp4-файла, пишем в avi-файл без перекодирования.

Иногда лучше без опции «-shortest», т.к. с ней могут получатся слишком короткие файлы. Опиця -shortest делает файл минимальный длины (выбирает что короче звук или изображение)

for i in *.mp4; do ffmpeg -i "`basename "$i" .mp4`.wav" -i "$i" -map 0:0 -map 1:0 -acodec copy -vcodec copy "`basename "$i" .mp4`.avi"; done;