我正在创建一个 MP4 文件FFmpeg 1.1.1, 使用life
和aevalsrc
生成一些测试视频和音频:
ffmpeg -f lavfi -i life -f lavfi -i aevalsrc=0 -frames:v 750 life.mp4
如果我在运行 iOS 4.1 的 iPhone 上播放它,就会出现一个音频语言按钮(黄色箭头所示),播放其他 MP4 文件时通常不会显示该按钮:
点击此按钮会弹出音频语言屏幕,其中“未确定”是唯一的选项:
使用 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"
}
}
]
}
但是,我还有一个包含"language": "und"
元数据标签的旧 MP4 文件,它不是导致音频语言按钮出现在 iPhone 上。因此,此标签的存在并不是导致按钮出现的原因。
我一直在试图弄清楚是什么原因导致某些 MP4 文件显示音频语言按钮,而其他文件不显示。
以下是这两个 MP4 文件的 FFprobe 输出及其差异:
值的差异可能compatible_brands
是原因吗?这是"mp41"
当按钮不显示时和"isomiso2avc1mp41"
当按钮显示时的情况。
这是媒体信息这两个 MP4 文件的输出以及它们的差异:
所以我的问题是:如何让 FFmpeg 生成 MP4 文件,而不会导致音频语言按钮出现在 iPhone 上?也许需要使用-metadata
选项?
在此先非常感谢您的帮助!