iOS 在使用 ffmpeg 添加的音频和字幕轨道之间切换

iOS switching between audio & subtitle tracks added using ffmpeg

编辑:更改标题以反映@llogan 的回答和评论涵盖音频 字幕轨道之间的切换。

我有一个带有英语音频的 m.mp4,我想添加第二个意大利语音频流,以便我可以使用 iPhone 播放任何一种语言。当我使用这个命令时:

ffmpeg -i m.mp4 -i ita.mp3 -c copy -map 0 -map 1 out.mp4 

ffmpeg -i out.mp4 的输出(见下文)显示添加了新的音频流,我可以使用 VLC 播放器在音频流之间切换。然而,当我 transfer the video 进入电视应用程序并在 MacOS 或 iOS 上播放它时,它只能播放原始英语,我看不到播放其他语言的选项。

如何让它能够在 iOS 上的任一音频之间切换?

这是 ffmpeg -i out.mp4:

的输出
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 400x300 [SAR 1:1 DAR 4:3], q=2-31, 482 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 102 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 152 kb/s
    Metadata:
      encoder         : LAME3.100
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #1:0 -> #0:2 (copy)

有些播放器不支持 MP4 中的 MP3。尝试 AAC:

ffmpeg -i m.mp4 -i ita.mp3 -map 0 -map 1:a -c copy -c:2 aac -metadata:s:a:0 language=eng -metadata:s:a:1 language=ita -movflags +faststart out.mp4