ffmpeg edite metadados avi e nomeação de trilha de áudio

3

Eu tenho um monte de filmes em formato avi no meu disco. No entanto, eles não contêm metadados como título, etc.

Encontrei um comando que faria isso por mim:

ffmpeg -i input.avi -metadata title="Moonshine" -metadata author="Moonshine" -metadata copyright="2009" -metadata comment="foo" -acodec copy -vcodec copy output.avi

Isso funciona bem, mas só copiará uma faixa de áudio. Meus arquivos contêm mais de uma faixa de áudio. Eu quero que o ffmpeg copie tudo e apenas dê um título ao arquivo.

Além disso, existe alguma maneira de dar às faixas de áudio um nome de idioma? Por exemplo, um arquivo contém duas faixas de áudio. O primeiro é o inglês e o segundo é o russo. Como eu os nomeio corretamente, então quando eu uso um player de vídeo, ele me mostraria no menu de idiomas que o primeiro é o inglês e o segundo é o russo?

    
por Davlog 16.07.2014 / 14:55

3 respostas

5

seleção de fluxo

O fluxo padrão comportamento de seleção é selecionar um tipo de fluxo por entrada. Por exemplo, como em sua entrada, se ela contiver dois fluxos de áudio, somente o fluxo com o maior número de canais será selecionado.

Você pode dizer a ffmpeg para incluir todos os fluxos com a opção -map .

Como a opção -map começa a contar em 0 , o 0 neste exemplo se refere à primeira entrada ( input.avi : sua única entrada nesse caso). Se você tivesse entradas adicionais, então -map 1 se referiria à segunda entrada.

definir metadados de idioma

Para definir o idioma do primeiro e do segundo fluxo de áudio, use a opção -metadata com especificadores de fluxo :

ffmpeg -i input.avi -map 0 -codec copy -metadata:s:a:0 language=eng -metadata:s:a:1 language=rus output.avi

Veja a documentação para mais informações.

    
por 19.07.2014 / 19:21
0

Use assim para arquivos AVI

 -map 0 -acodec copy -metadata:s:a:0  title="English" -metadata:s:a:1 title="Hindi"

A palavra-chave title faz o truque

    
por 17.08.2015 / 17:06
0

Levou muito tempo para eu descobrir isso. Estou postando aqui, porque mesmo depois de 3 anos esse tópico é um dos primeiros hits da pesquisa no google: AVI (mais específico: RIFF) suporta nomes de idiomas, mas ao contrário do mkv, os metadados não são armazenados no fluxo, mas no cabeçalho usando as tags IAS1-9 para até 9 streams de áudio diferentes.

ffmpeg -i input.avi -map 0 -codec copy -metadata IAS1=eng -metadata IAS2=ger output.avi

O VLC é bastante tolerante. Se você inserir o código ISO "ger", o VLC traduz para "Deutsch", se você digitar "MyLang", o VLC exibirá "MyLang". Outros softwares como o Kodi precisam do código ISO correto. Ele só iria ler "MyL" e, em seguida, exibir o idioma como desconhecido.

No entanto, esteja ciente de que o ffmpeg não apenas adiciona o idioma, mas também altera outros metadados. Por exemplo, os dados de intercalação de áudio e de pré-carregamento são diferentes em output.avi, não se sabe se isso é bom ou se pode resultar em falta de sincronismo de áudio. Verifique com o MediaInfo ou similar.

    
por 29.06.2017 / 08:34