ffmpeg - Como copiar | extrair configurações de codificação do arquivo de mídia existente?

13

Eu gostaria de poder fazer isso várias vezes agora, então eu pergunto.

Se eu tiver um arquivo de áudio ou vídeo existente, ffmpeg , mplayer e outros players de mídia poderão detectar pelo menos algumas de suas "propriedades" como contêiner, codec e bitrate usados, provavelmente várias configurações específicas de qualidade e codificação, etc.

Como posso extrair essas configurações de um arquivo existente para usá-las (diretamente) para codificação com ffmpeg?

Por exemplo, recebi um vídeo mkv codificado com x264 com algumas configurações e outro arquivo avi descompactado. Eu gostaria de "copiar" as configurações de codificação usadas no arquivo x264 mkv para transcodificar o avi com as configurações mesmas .

Nota: Estou procurando uma maneira que não inclua trabalho humano com "traduzir" as configurações de um decodificador para o codificador. Não há problema se eu precisar extrair as configurações primeiro e salvá-las em algum lugar, mas gostaria de poder simplesmente alimentar as opções de leitura em uma linha de comando ou arquivo de configuração predefinido para o ffmpeg.

    
por n611x007 01.04.2013 / 07:53

1 resposta

7

Isso não será trivial. Não tenho conhecimento de um único script que cuide dessas tarefas, que geralmente são feitas manualmente. Para obter mais informações sobre as configurações de codificação, em Unix / Linux ou OS X, você pode usar mediainfo com alguns truques de Bash.

Por exemplo, para um vídeo codificado em x264 em um arquivo MP4:

mediainfo input.mp4 | grep "Encoding settings" | cut -d':' -f2- | tr '/' '\n' | sed 's/ //'

Isto irá mostrar uma lista de opções x264:

cabac=1
ref=3
deblock=1:-1:-1
analyse=0x3:0x113
me=hex
subme=7
psy=1
…

Você poderia então passar manualmente essas opções para o binário x264.

Se você passar pelo FFmpeg, isso é um pouco mais complicado, já que nem todas as opções do x264 podem ou devem ser mapeadas assim. Observe que, com frequência, uma simples predefinição, ajuste e especificação de perfil também funcionarão (conforme visto em x264 --fullhelp e no guia de codificação x264 ), e especificando o nível de CRF é suficiente.

E isso não é mesmo considerando áudio, onde, felizmente, não há muitas opções.

    
por 01.04.2013 / 23:31