Estou criando um arquivo MP4 com FFmpeg 1.1.1 , usando life
e aevalsrc
para gerar algum vídeo e áudio de teste:
ffmpeg -f lavfi -i life -f lavfi -i aevalsrc=0 -frames:v 750 life.mp4
Se eu reproduzi-lo em um iPhone executando o iOS 4.1, aparece um botão de idioma de áudio (indicado pela seta amarela) que normalmente não é exibido quando outros arquivos MP4 são reproduzidos:
Tocarnestebotãoexibeumateladeidiomadeáudio,com"Indeterminado" sendo a única opção:
UsandooFFprobeparamostrarasinformaçõesdofluxo,possoverumatagdemetadados"language": "und"
nos fluxos de áudio e vídeo:
ffprobe -v quiet -print_format json -show_streams life.mp4
{
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_type": "video",
...
"tags": {
"language": "und",
"handler_name": "VideoHandler"
}
},
{
"index": 1,
"codec_name": "aac",
"codec_type": "audio",
...
"tags": {
"language": "und",
"handler_name": "SoundHandler"
}
}
]
}
No entanto, eu também tenho um arquivo MP4 antigo contendo a tag "language": "und"
metadata que não faz com que o botão de idioma do áudio apareça no iPhone. Portanto, a presença dessa tag não é a causa do aparecimento do botão.
Eu tenho tentado descobrir o que faz com que o botão do idioma de áudio seja exibido para alguns arquivos MP4, mas não para outros.
Aqui está a saída do FFprobe para estes dois arquivos MP4, e o diff deles:
A diferença no valor compatible_brands
pode ser a causa? É "mp41"
quando o botão não é exibido e "isomiso2avc1mp41"
quando o botão é exibido.
Aqui está a saída MediaInfo para esses dois arquivos MP4, e a diferença deles:
Então, minha pergunta é: como posso fazer com que o FFmpeg gere um arquivo MP4 que não faça com que o botão do idioma do áudio apareça no iPhone? Talvez uma tag de metadados precise ser adicionada ou removida usando a opção -metadata
?
Muito obrigado antecipadamente pela sua ajuda!