Use
FOR %%a IN ("*.m4v") DO ffmpeg -i "%%a" -i "%%~na.mp3" -map 0:v -map 1:a -c copy "newpath\%%~na.mp4"
pause
Eu tenho uma lista de arquivos .m4v. Eu tenho uma lista de arquivos .mp3 (que são o mesmo nome de arquivo que os arquivos correspondentes .m4v).
Os arquivos .m4v contêm áudio de qualidade inferior. Os arquivos .mp3 contêm um áudio de melhor qualidade.
Eu gostaria de substituir o áudio nos arquivos .m4v, com o áudio correspondente nos arquivos .mp3.
Eu não gostaria de fazer isso individualmente para mais de 10.000 arquivos, seja no mkvmerge ou no ffmpeg.
Eu tentei um script em lote com algo assim, mas sem sucesso:
FOR %%a IN ("*.m4v") DO ffmpeg -i "${%%a}" -i "${%%a//.m4v/.mp3}" -vcodec copy -acodec copy "${%%a//.m4v/.mp4}"
pause
Assim como (como eu queria a saída em um diretório diferente):
FOR %%a IN ("*.m4v") DO ffmpeg -i "%%a" -i "%%a" -vcodec copy -acodec copy "outputDirFoo123\%%~na.mp4"
pause
Até agora, não foram bem sucedidos (só encontrei erros). Não sei como consertar isso.
Alguém poderia indicar como posso processar em lote o que eu quero acima? Existe uma maneira melhor de fazer isso do que estou aqui?
Muito obrigado.