如何使用ffmpeg设置默认流

Sam*_*Sam 5 ffmpeg stream subtitle

我有一些m4v文件,我想用ffmpeg添加字幕.我知道我需要映射流以将它们输入到输出文件中,但是如何确保此字幕流将是默认流?字幕是.srt,人们似乎在说他们与mp4容器不兼容,我需要将字幕转换为第一个?

此外,各种流的顺序是否重要?是否必须首先播放视频流,然后是音频,然后是字幕?或者你可以随意混合起来吗?它有什么不同吗?

最后,默认流和强制流之间有什么区别?

ale*_*son 1

  1. SRT 文件可用作 ffmpeg 输入以在 MP4 容器中重新混合。不存在兼容性问题。

    ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4
    
    Run Code Online (Sandbox Code Playgroud)

    在这里,对于 mp4,您必须指定字幕编解码器mov_text

  2. 顺序不重要,您可以反转您的输入,您可以反转音频/视频和字幕编解码器设置,这样您将始终有 3 个曲目一起播放。

    ffmpeg -i subtitles.srt -i input.mp4 -c:s mov_text -c:a copy -c:v copy output.mp4
    
    Run Code Online (Sandbox Code Playgroud)
  3. 不确定,但在这里我们明确地为字幕设置了一个编解码器,它可能就是您所说的“强制”。它有点不同:

    ffmpeg -i input.mp4 output.mp4
    
    Run Code Online (Sandbox Code Playgroud)

    这里 ffmpeg 将使用其“默认流类型”或编解码器进行 MP4 输出。

  • 他们应该为此授予徽章。 (2认同)