07-----给音视频文件添加字幕流

添加字幕流可以使用ACHTIME软件去添加。

一 下载ACHTIME软件

在下载之前我们需要注册一个账号。然后才能下载。
http://arctime.cn/download.html

二 添加字幕流

我们知道字幕流分为外挂字幕、软字幕、硬字幕,我们这里因为想要在代码测试。所以需要的是软字幕。关于字幕更多的理论可以看这篇文章:ffmpeg-给视频添加字幕(二十四)

2.1

首先找一个不带字幕流(外挂、软、硬均没有)的视频文件,可以使用vlc去看。例如我的视频文件:
下面看到只有视频和音频流,并没有字幕流。

在这里插入图片描述

2.2

然后打开ACHTIME软件,按照这篇文章去生成字幕即可。
使用Arctime生成各种格式的字幕文件

此时再用VLC播放本视频文件,就可以看到多了字幕流。
在这里插入图片描述

实际上我们在插入空白字幕的时候,发现生成的ass字幕文件中,字幕是2s的显示时长。srt字幕文件也同理。
在这里插入图片描述

但是我在使用ffplay去debug的时候,并未看到有字幕流,使用ffprobe同理。
命令:

ffprobe.exe sintel.mp4

在这里插入图片描述
结果只看到视频流和音频流,并未有字幕流,那为啥vlc看到的信息又有字幕流呢?
答:这是因为这个文件实际并没有字幕流,vlc能看到信息是因为vlc的信息查找做得比较细,因为这个信息是ARCTIME工程生成的,所以vlc能看到,ffprobe看不到。这是不同播放器的检测差异造成的。
如果此时你将这个mp4的文件路径移动其它目录,例如桌面,那么此时不管是使用vlc还是ffplay,都是没有字幕信息的。

然后如果我们使用vlc和ffplay去播放,发现vlc显示的画面都能看到字幕,ffplay不能,这一点又是挺奇怪的?
答:实际上同理,这是因为我在使用ARHTIME时,在该目录生成了一个工程,所以直接播放使用ACHTIME修改过的那个路径下的mp4文件,vlc搜索做得细,可以看到显示的画面有字幕。但是ffpaly播放不会显示字幕。
如果此时你将这个mp4的文件路径移动其它目录,例如桌面,那么此时不管是使用vlc还是ffplay,都是没有字幕的。

这两个问题实际上是一致的,因为在我未理解之前,未能很好区分它们。

2.3

经过上一步处理并未能达到我的要求,因为使用ffplay debug却没有字幕流,这不是我想要的,所以我需要去转换格式,因为我想用mp4文件debug,所以使用ffmpeg去将字幕流格式转成mov_text格式。

ffmpeg -i sintel.mp4 -i ./sintel_Subtitle_Export/sintel.srt -c copy -c:s mov_text sintel-sub.mp4

此时使用ffprobe就可以看到对应的字幕流,ffplay debug时也能进入字幕流的逻辑,说明没问题的。
在这里插入图片描述

但是vlc、ffplay播放时会没有字幕:
vlc解决:因为vlc默认是隐藏软字幕的,所以需要手动开启。选择:字幕->字幕轨道->轨道1,即可开启。
在这里插入图片描述

ffplay暂时未知道如何处理。

三 其它

如果在添加字幕后,使用播放器播放仍然没有字幕,可以参考这篇文章看看什么原因。使用FFmpeg命令给视频文件添加软字幕并解决播放器播放没有出现字幕的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值