使用 ffmpeg 默认启用字幕流播放

使用 ffmpeg 默认启用字幕流播放

ffmpeg 是否可以创建带有标记为自动可见的字幕轨道的电影?

例如,在 VLC 中,我必须从字幕菜单中手动启用字幕轨道。如果字幕无需任何干预就能显示出来,那就太好了。

我在 stackoverflow 上发现了这一点:

ffmpeg -i in.mp4 -i in.srt -c copy -disposition:s:0 default out.mkv

但是它从多个轨道中选择了默认字幕轨道,因此在电影开始时不会显示任何字幕。

答案1

您可以使用MP4Box 0.6.2-DEV-rev453(2016 年 5 月)或更高版本可执行此操作:

mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4

这会将输出文件中的字幕流标记为强制。然而,此标记仅从以下版本的程序开始才被识别:


我看到有人提到这个帖子在 FFmpeg 邮件列表中,有一个关于实现 FFmpeg 处置的补丁:

ffmpeg -i xr.mp4 -i xr.en.srt -c copy -c:s mov_text -disposition:s forced ya.mp4

然而,在尝试了“强制”和“默认”之后,FFmpeg 标记的字幕无法被 MPC-HC 或 VLC 识别为强制。


为了回应评论,这里对 MP4Box 0.7.0(2017 年 4 月)和 VLC 3.0.0-20170926(2017 年 9 月)进行了测试。请注意,较新的 VLC 版本存在崩溃问题,即使在没有字幕的视频上也是如此。使用此文件:

youtube-dl --write-auto-sub --format 18 --output xr.mp4 kcs82HnguGc
ffmpeg -i xr.en.vtt xr.en.srt
mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4

结果:

子

答案2

它与 VLC 有关。您可以在
VLC 中输入以下单词来启用字幕的自动可见性any工具 ==> 偏好设置 ==> 字幕/OSD ==> 首选字幕语言

相关内容