Stream 如何使用ffmpeg设置默认流

Stream 如何使用ffmpeg设置默认流,stream,ffmpeg,subtitle,Stream,Ffmpeg,Subtitle,我有一些m4v文件,我想用ffmpeg添加字幕。我知道我需要映射流以将它们放入输出文件,但如何确保此字幕流将是默认流?字幕是.srt,人们似乎在说它们与mp4容器不兼容,我需要先将字幕转换成什么 此外,各种流的顺序是否重要?视频流总是必须先出现,然后是音频,然后是字幕吗?或者你可以随意把它们混在一起吗?这有什么区别吗 最后,默认流和强制流之间的区别是什么 SRT文件可以用作ffmpeg输入,在MP4容器中重新混合。没有兼容性问题 ffmpeg -i input.mp4 -i subtitles.

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

此外,各种流的顺序是否重要?视频流总是必须先出现,然后是音频,然后是字幕吗?或者你可以随意把它们混在一起吗?这有什么区别吗

最后,默认流和强制流之间的区别是什么

  • SRT文件可以用作ffmpeg输入,在MP4容器中重新混合。没有兼容性问题

    ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4
    
    这里对于mp4,您必须指定字幕编解码器
    mov_text

  • 顺序不算数,您可以反转输入,您可以同时反转音频/视频和字幕编解码器设置,您将始终同时播放3首曲目

    ffmpeg -i subtitles.srt -i input.mp4 -c:s mov_text -c:a copy -c:v copy output.mp4
    
  • 不确定,但在这里,我们明确地为字幕设置了一个编解码器,这可能就是您所说的“强制”。这与以下内容有些不同:

    ffmpeg -i input.mp4 output.mp4
    
    在这里,ffmpeg将使用其“默认流类型”或编解码器进行MP4输出

  • 一,。我有一些m4v文件,我想用ffmpeg添加字幕

    m4v是非平台特定MP4标准的苹果仿制品版本。我对这个苹果格式不太了解,但像大多数旧的容器格式一样,我怀疑它可能只支持音频/视频,或者对字幕的支持很差或有限

    二,。字幕是.srt,人们似乎在说它们与mp4容器不兼容,我需要先将字幕转换成什么

    您可以使用AegisSub或Gaupol等工具转换字幕。然而,我的建议是使用MKVMerge工具,它将生成一个MKV文件容器,该容器格式旨在支持大量不同的流,包括字幕(几乎每种类型)、字体和附件。MKVmerge还允许您指定默认流

    三,。此外,各种流的顺序是否重要?视频流总是必须先出现,然后是音频,然后是字幕吗?或者你可以随意把它们混在一起吗?这有什么区别吗

    否。每个流的类型(视频/音频/字幕/其他)在标题中指定。玩家们知道谁是谁

    四,。最后,默认流和强制流之间的区别是什么


    默认流是指如果您没有在播放器中设置语言偏好代码(英语、日语、SPA、ITA等),您的播放器将默认使用的流。无论您在播放机中指定的设置如何,强制流都将强制该流。

    很抱歉,格式化iPhone的答案非常困难!他们应该给我一个徽章。我原以为默认/强制流与播放过程中的某些事情有关,谢谢你的澄清。如果我使用您给出的命令(ffmpeg-I input.mp4-I subtitles.srt-c:s mov_text-c:v copy-c:a copy output.mp4),一切都很好,但是我最初将输出文件作为.m4v文件,这会立即给我一个编解码器错误。我认为.mp4和.m4v容器是一样的,那么为什么它会给我一个错误,而另一个却可以工作呢?3:流可以有forced/default/tag。默认情况下,强制应始终播放。但是,如果注意默认标记,并且忽略流的顺序,则取决于设备/程序内部的mpeg解码器的实现。这适用于所有流:视频/音频/字幕。如果播放设备支持mp4内的字幕,也可以使用。默认情况下,某些电视将始终播放第一个流。无论默认标记是什么,使用m4v时都会出现错误,因为ffmpeg不知道要使用哪个容器。根据输出文件的扩展名选择容器类型。oufile.mp4将使用mp4容器。但是使用命令-f可以手动指定容器类型并使用非标准输出文件扩展名。ffmpeg-i input.mp4-i subtitles.srt-c:s mov_text-c:v copy-c:a copy-f mp4 output.m4vffmpeg还指定默认流。选项-disposition:a:1默认值将第二个音频标记为默认值,但不要忘记从第一个曲目中删除默认标记:例如-disposition:a:0 none或链接中的其他类型。它将创建原始文件的副本,因此它不是即时更改,就像使用mkvpropedit时使用--set flag default option.m4v是mp4。完全一样。唯一的区别是使用mp4文件中的Quicktime时。