python之 ffmpeg给mp4视频添加字幕

Posted 水w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

ffmpeg 给视频添加字幕,在视频的某个时间段加入声音特效和动画

参考技术A 视频中的特效音效处理
视频的剪辑处理

创建文件list.txt

以上是关于python之 ffmpeg给mp4视频添加字幕的主要内容,如果未能解决你的问题,请参考以下文章

android ffmpeg视频添加字幕和配音

批处理使用ffmpeg为mp4批量加入字幕

使用ffmpeg压制硬字幕与logo

ffmpeg:在不创建新文件的情况下向 mp4 添加字幕

android 中使用ffmpeg,将视频加入字幕,用ass文件,在PC上可以,但在Android上一直不行

ffmpeg - 添加和删除字幕而不更改视频