Como usar o ffmpeg para adicionar metadados a um arquivo AAC sem reencodar?

12

Estou usando o ffmpeg para extrair apenas o fluxo de áudio de um arquivo de vídeo:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

Isso produz um arquivo de áudio limpo, mas sem metadados.

Para adicionar metadados, o ffmpeg tem uma opção de linha de comando:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac

Isso é executado sem erros, mas quando o arquivo de saída é verificado com o ffprobe, ele não possui tags de metadados.

Se o contêiner de saída for alterado para mp4, os metadados poderão ser definidos e exibidos no arquivo de saída:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4

Aqui está a parte interessante; se eu usar o Banshee para editar os metadados de um arquivo .aac existente e, em seguida, usar o ffmpeg para processar o arquivo da mesma maneira, os metadados originais serão copiados com êxito para o novo arquivo .aac.

ffmpeg -i metadata.aac -vn -acodec copy audio.aac

mas, tentativas de alterar os metadados não surtem efeito:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac

Portanto, parece que o contêiner .aac pode conter metadados e o ffmpeg pode copiá-lo da entrada para a saída, mas não pode alterá-lo quando o codec de cópia é usado.

Alguém sabe de uma maneira de fazer o ffmpeg alterar os metadados em um contêiner aac sem reencodar?

Como alternativa, há outra ferramenta genérica que eu poderia usar para definir os metadados após o processamento do arquivo?

Muito obrigado. Chris.

    
por Chris C. 23.10.2011 / 05:32

3 respostas

11

O objetivo era produzir um arquivo somente de áudio a partir de um arquivo de vídeo sem recodificar e introduzir metadados reconhecíveis pelos media players. O ambiente é Debian GNU / Linux.

Gostaria de agradecer ao @bootload por me colocar no caminho certo para encontrar uma resposta.

O ffmpeg não parece suportar a adição de tags de metadados aos arquivos de saída .AAC, no entanto, aqui estão duas soluções possíveis.

  1. Os utilitários de linha de comando id3 e id3v2 (disponíveis nos repositórios padrão) podem aplicar tags id3 a um arquivo de áudio .aac. O Nautilus reconheceu os estilos de tags v1 e v2, portanto, deve funcionar. As mesmas tags foram reconhecidas pelo media player Banshee.
id3v2 -t "My Title" audio.aac
  1. O ffmpeg pode adicionar metadados a um contêiner MP4, mas uma extensão .mp4 no Nautilus aparecerá como um arquivo de vídeo. A Apple Inc. usa extensões não padrão para o contêiner MP4 para distinguir arquivos de vídeo (.m4v) de arquivos de áudio (.m4a). Essas extensões são reconhecidas no Debian pelo Nautilus e pelo ffmpeg. Então,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

produzirá um arquivo somente de áudio reconhecido pelo Nautilus e o ffmpeg poderá adicionar metadados ao contêiner com segurança.

    
por 29.10.2011 / 01:29
3

Qual é o hardware pretendido? É para um dispositivo Apple iP *? Se sim, tente link Caso contrário, tente link usando o método "INI codificado em UTF-8" mex / demux. (Extraia os metadados como arquivo utf8 & modifique e insira novamente).

    
por 26.10.2011 / 04:48
1

MP4Box (parte do pacote "gpac") contém arquivos AAC com contêineres MP4 sem alterar o original dados. Os metadados podem ser adicionados usando praticamente qualquer parte do software de marcação:

MP4Box -add old.aac new.mp4
    
por 19.08.2013 / 01:22