Como agrupar arquivos de trilha de áudio e vídeo com o ffmpeg

0

Eu acho que todo mundo sabe o problema de baixar o 480p & Vídeos em 1080p do Youtube, e que a única maneira disponível para muitos programas de download é baixar as trilhas de vídeo e áudio separadamente, e depois juntá-las em um único container.

Existe um código ffmpeg para Multiplex (um por um) o .m4a & .m4v rastreia em um contêiner .mp4

Este é o código:

ffmpeg -i "file name.m4v" -i "file name.m4a" -acodec copy -vcodec copy "file name.mp4"

Mas como BATCH multiplex Muitos .m4a & arquivos .m4v?

Obrigado antecipadamente ...

    
por KorkOoO 03.06.2014 / 08:25

1 resposta

2

Use um loop for. Este exemplo é para bash e usa a manipulação da variável bash , mas ela pode ser adaptada para outros shells do tipo unix / linux.

Nota : presume-se que você esteja no diretório dos arquivos e que os arquivos de vídeo e áudio estejam presentes com o mesmo nome, diferindo apenas por extensão ( .m4v - video, .m4a - audio).

for v in *.m4v; do ffmpeg -i "${v}" -i "${v//.m4v/.m4a}" -acodec copy -vcodec copy "${v//.m4v/.mp4}"; done

Explicação

for v in *.m4v Execute as seguintes ações em todos os arquivos terminados em '.m4v'. v é um nome de variável que será atribuído a cada arquivo de vídeo no diretório atual, um por vez, por bash . bash converterá automaticamente o *.m4v em uma lista de arquivos .m4v no diretório atual e os alimentará no loop for. Você não precisa inserir nomes de arquivos manualmente.

Variável v contém um nome de arquivo de vídeo diferente em cada iteração de loop, por exemplo, "video_file_1.m4v" , depois "video_file_2.m4v" etc. O ${v//pattern/replacement} informa bash para localizar ocorrências de pattern e substituí-las por %código%. Por exemplo, replacement converterá o nome do arquivo ${v//.m4v/.mp4} para "video_file_1.m4v" .

    
por 03.06.2014 / 15:58