FFmpeg 和 iPhone:不显示音频语言按钮

FFmpeg 和 iPhone:不显示音频语言按钮

我正在创建一个 MP4 文件FFmpeg 1.1.1, 使用lifeaevalsrc生成一些测试视频和音频:

ffmpeg -f lavfi -i life -f lavfi -i aevalsrc=0 -frames:v 750 life.mp4

如果我在运行 iOS 4.1 的 iPhone 上播放它,就会出现一个音频语言按钮(黄色箭头所示),播放其他 MP4 文件时通常不会显示该按钮:

iPhone 视频屏幕

点击此按钮会弹出音频语言屏幕,其中“未确定”是唯一的选项:

iPhone 视频屏幕、音频语言选项

使用 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选项?

在此先非常感谢您的帮助!

相关内容