Я создаю файл 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
?
Заранее большое спасибо за вашу помощь!