python之 ffmpeg给mp4视频添加字幕
ffmpeg 给mp4视频加字幕
·
目录
ffmpeg给mp4视频加字幕
前期输入准备:
- mp4视频
- 外挂字幕:是一个单独的外部字幕文件,格式类型一般有srt、vtt、ass等等。播放视频时,需要把外挂字幕和视频放在同一目录下,并在播放器中选择字幕文件才可以在视频中看到字幕。
在网上找了一个外部字幕文件,可以参考这个:https://i0.hdslb.com/bfs/subtitle/e837950453ea3e4f6e81a5709449af173d2604dc.json
输出:
- mp4视频
(1)前期需要准备一个mp4视频,
(2)也可以运行下列代码生成外部字幕文件srt格式的,
补充:比较流行的文本字幕有srt、smi、ssa,因为是文本格式,所以就比较小了,一般大不过百来k。其中srt文本字幕最为流行,因为其制作规范简单,一句时间代码+一句字幕,使得制作修改就相当简单。配合上.style文件还能让srt自带一些字体上的特效等。几种文本字幕可以互相转换。文本字幕一般通过对图形字幕进行OCR或者手工制作生成,OCR英文字幕不难,毕竟英文识别难度小嘛,OCR中文难度就大一些,所用的软件个头也不小(SubOCR,
30多MB)。
SRT文件属于视频字幕文件,用户可以使用记事本打开查看,如果需要编辑字幕,SRT文件打开后,可以看到主要包括:数字、时间、字幕文本以及空行组成,简单了解即可。
def s2hms(x): # 把秒转为时分秒
m, s = divmod(x, 60)
h, m = divmod(m, 60)
hms = "%02d:%02d:%s" % (h, m, str('%.3f' % s).zfill(6))
hms = hms.replace('.', ',') # 把小数点改为逗号
return hms
sub_content = [{"from": 0, "to": 3.39, "location": 2,
"content": "在本视频中"}]
with open('1.srt', 'w') as f:
write_content = []
for n, i in enumerate(sub_content): # 序号+开始-->结束+内容
write_content.append(
str(n + 1) + '\n' + s2hms(i['from']) + ' --> ' + s2hms(i['to']) + '\n' + i['content'] + '\n\n')
f.writelines(write_content)
执行结果:
外部字幕文件1.srt打开之后,是这样的:
(3) 运行下列代码来对视频添加外部字幕文件里的字幕,
import subprocess
cmdLine = 'ffmpeg -i a.mp4 -vf subtitles=1.srt output.mp4'
subprocess.call(cmdLine, shell=True)
执行结果:
打开output.mp4,就可以看到我们添加的字幕了,
OK。
更多推荐
已为社区贡献22条内容
所有评论(0)