Я создаю файл MP4 с FFmpeg 1.1.1 , используя life
и aevalsrc
для генерации тестового видео и аудио:
ffmpeg -f lavfi -i life -f lavfi -i aevalsrc=0 -frames:v 750 life.mp4
Если я играю на iPhone под управлением iOS 4.1, появляется кнопка языка аудио (обозначена желтой стрелкой), которая обычно не отображается при воспроизведении других файлов MP4:
Нажатие на эту кнопку вызывает экран звукового языка с единственной опцией «Undefined»:
Используя FFprobe для отображения информации о потоке, я вижу "language": "und"
тег метаданных в видео и аудио потоках:
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"
}
}
]
}
Тем не менее, у меня также есть старый файл MP4, содержащий "language": "und"
тег метаданных, который не приводит к появлению кнопки языка аудио на iPhone. Поэтому наличие этого тега не является причиной появления кнопки.
Я пытался выяснить, из-за чего кнопка аудио языка отображается для некоторых файлов MP4, но не для других.
Вот вывод FFprobe для этих двух файлов MP4 и их разность:
Может ли разница в compatible_brands
стоимости быть причиной? Это "mp41"
когда кнопка не отображается, и "isomiso2avc1mp41"
когда кнопка отображается.
Вот вывод MediaInfo для этих двух файлов MP4 и их разница:
Итак, мой вопрос: как я могу заставить FFmpeg генерировать файл MP4, который не приводит к появлению кнопки языка аудио на iPhone? Может быть, тег метаданных нужно добавить или удалить с помощью -metadata
опции?
Заранее большое спасибо за вашу помощь!