Multiplexando vídeo e áudio com FFMPEG de subdiretórios usando um script de lote do Windows

1

Eu estou tentando descobrir um script em lote (baseado em Windows) que me permitirá multiplexar alguns arquivos .m2v e .wav que existem em uma carga de subdiretórios (dentro de um único diretório principal). Eles precisam ser redistribuídos e transcodificados também, os arquivos de saída precisam ser MXF e acabar em outra pasta. Eu sou novo em scripts de lote, não tão novos para os comandos do FFMPEG. Ainda não consegui encontrar nenhum script em lote que permita o uso de vários arquivos, apenas aqueles que funcionam para converter um único arquivo.

Depois de muita pesquisa, a coisa mais próxima que eu vi é essa, que eu tentei sem sucesso. Estranhamente, uma vez produziu um arquivo .mxf, apesar de 0KB, mas toda vez que não recebo nada.

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf". 

Não tenho certeza do que deve ser colocado entre parênteses (".m2v").

o que isso representa?

    
por DMtd 05.07.2016 / 17:52

1 resposta

1

Não sei ao certo o que deve ser colocado entre parênteses, onde tenho (".m2v") .

what does that represent?

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf"

O valor (".m2v") representa um conjunto de arquivos para processar.

No seu comando não há arquivos para processar desde:

  • .m2v é apenas uma extensão e podemos supor que deve ser algo como filename.m2v
  • Você realmente precisa de uma expressão curinga aqui (veja abaixo como fazer isso).
  • Seus arquivos estão em subdiretórios.

Use o seguinte arquivo de lote (no único diretório principal):

@echo off
setlocal
for /f "usebackq" %%a in ('dir /b /s *.m2v') do (
  echo ffmpeg -i "%%~dpna.wav" -i "%%~dpna.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf
  )
endlocal

Notas:

  • Remova o echo do comando ffmpeg quando estiver satisfeito com o que o arquivo em lote fará.

  • dir /b /s *.m2v é usado para produzir uma lista de arquivos a serem processados.

    A opção /b fornece apenas os nomes dos arquivos (não queremos os cabeçalhos, resumo ou outros detalhes)

    A opção /s permite que dir processe subdiretórios.

  • for /f é usado para processar a lista de arquivos.

  • %%~dpna é usado para obter o nome completo do arquivo sem a extensão.

Leitura Adicional

por 06.07.2016 / 11:22