Usando o ffmpeg para copiar metadados em lote de um arquivo para outro

0

Eu vi alguns ótimos artigos sobre como usar o ffmpeg para copiar metadados de um arquivo para outro sem recodificar. Mas eu tenho mais de 100 arquivos e gostaria de fazer isso em uma operação em lote. Alguma sugestão?

Informações adicionais: tenho duas pastas, uma contém os arquivos de vídeo com metadados corretos e a outra contém os arquivos de vídeo com metadados incorretos. Os arquivos têm os mesmos nomes de arquivos correspondentes.

    
por Adrian L 19.01.2017 / 22:56

1 resposta

0

Vou dar-lhe uma resposta de script, pode muito bem haver uma ferramenta mais geral para isso.

Para futuros leitores, este script descreve como copiar metadados: Usando o ffmpeg para copiar metadados de um arquivo para outro .

O seguinte script irá percorrer os arquivos em um diretório, encontre os arquivos correspondentes em um segundo diretório e, em seguida, combine esses dois arquivos em um terceiro diretório de saída

dir1=FIRST DIRECTORY
dir2=SECOND DIRECTORY
output=OUTPUT DIRECTORY
for file in $(ls $dir1); do
  ffmpeg -i "$dir1/$file" -i "$dir2/$file" -map 1 -c copy \
   # copies all global metadata from in0.mkv to out.mkv  
   -map_metadata 0 \
   # copies video stream metadata from in0.mkv to out.mkv
   -map_metadata:s:v 0:s:v \
   # copies audio stream metadata from in0.mkv to out.mkv
   -map_metadata:s:a 0:s:a \
   "$outdir/$file"
done

O comando de mapeamento de metadados é adaptado da resposta citada.

Se você quiser fazer algo reutilizável, poderá colocar isso em um script com o seguinte cabeçalho (remova a atribuição para dir1, dir2 e saída no script acima). E, em seguida, chame-o como script.sh dir1 dir2 outdir

#!/bin/bash
set -x errexit # exit immediately on error
dir1="$1"
dir2="$2"
output="$3"

Atenção: não tenho nenhum desses scripts.

    
por 19.01.2017 / 23:12