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 nenhum metadado.
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 ffprobe, ele não possui tags de metadados.
Se o contêiner de saída for alterado para mp4, os metadados poderão ser configurados e aparecerão 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, use 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, as tentativas de alterar os metadados não têm 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 uma maneira de fazer com que o ffmpeg altere os metadados em um contêiner aac sem precisar recodificar?
Como alternativa, existe outra ferramenta genérica que eu poderia estar usando para definir os metadados após o processamento do arquivo?
Muito obrigado. Chris.
O MP4Box (parte do pacote "gpac") envolve arquivos AAC com contêineres MP4 sem alterar os dados originais. Os metadados podem ser adicionados usando praticamente qualquer software de marcação:
fonte