字幕文件读取

# 读取字幕文件
def read_srt(path):content = ""with open(path,'r', encoding='UTF-8') as f:content = f.read()return content# 字幕拆分
def get_sequences(content):sequences = content.split('\n\n')sequences = [sequence.split('\n') for sequence in sequences]# 去除每一句空值sequences = [list(filter(None, sequence)) for sequence in sequences]# 去除整体空值return list(filter(None, sequences))srt_path='./audio/333.zh-cn.srt'
content = read_srt(srt_path)
sequences = get_sequences(content)
print(sequences)

结果:
[[‘1’, ‘00:00:00,000 --> 00:00:00,790’, ‘活着’],
[‘2’, ‘00:00:01,730 --> 00:00:02,860’, ‘所为何事先生’],
[‘3’, ‘00:00:03,140 --> 00:00:05,010’, ‘我们在京城有一箱22任务’],
[‘4’, ‘00:00:05,230 --> 00:00:06,440’, ‘把这些人找过来’],
[‘5’, ‘00:00:07,010 --> 00:00:08,230’, ‘你就要辛苦一下了’], [‘6’, ‘00:00:09,290 --> 00:00:10,900’, ‘这一次我们要一起合作’], [‘7’, ‘00:00:11,020 --> 00:00:12,040’, ‘有目标是谁’],。。。

转换时间

strTime= '00:00:58,990'def strFloatTime(tempStr):xx = tempStr.split(':')hour = int(xx[0])minute = int(xx[1])second = int(xx[2].split(',')[0])minsecond = int(xx[2].split(',')[1])allTime = hour * 60 * 60 + minute * 60 + second + minsecond / 1000return allTime
print(strFloatTime(strTime))

结果:58.99

字幕挂载

from os.path import splitext, isfilefrom moviepy.editor import (VideoFileClip,TextClip,CompositeVideoClip)# 读取字幕文件
def read_srt(path):content = ""with open(path, 'r', encoding='UTF-8') as f:content = f.read()return content# 字幕拆分
def get_sequences(content):sequences = content.split('\n\n')sequences = [sequence.split('\n') for sequence in sequences]# 去除每一句空值sequences = [list(filter(None, sequence)) for sequence in sequences]# 去除整体空值return list(filter(None, sequences))def strFloatTime(tempStr):xx = tempStr.split(':')hour = int(xx[0])minute = int(xx[1])second = int(xx[2].split(',')[0])minsecond = int(xx[2].split(',')[1])allTime = hour * 60 * 60 + minute * 60 + second + minsecond / 1000return allTimeclass RealizeAddSubtitles():'''合成字幕与视频'''def __init__(self, videoFile, txtFile):self.src_video = videoFileself.sentences = txtFileif not (isfile(self.src_video) and self.src_video.endswith(('.avi', '.mp4')) and isfile(self.sentences) and self.sentences.endswith('.srt')):print('视频仅支持avi以及mp4,字幕仅支持srt格式')else:video = VideoFileClip(self.src_video)# 获取视频的宽度和高度w, h = video.w, video.h# 所有字幕剪辑txts = []content = read_srt(self.sentences)sequences = get_sequences(content)for line in sequences:if len(line)<3:continuesentences = line[2]start = line[1].split(' --> ')[0]end = line[1].split(' --> ')[1]start=strFloatTime(start)end=strFloatTime(end)start, end = map(float, (start, end))span=end-starttxt = (TextClip(sentences, fontsize=40,font='SimHei', size=(w - 20, 40),align='center', color='red').set_position((10, h - 150)).set_duration(span).set_start(start))txts.append(txt)# 合成视频,写入文件video = CompositeVideoClip([video, *txts])fn, ext = splitext(self.src_video)video.write_videofile(f'{fn}_2带字幕{ext}')if __name__ == '__main__':'''调用方法示例'''srt_path = './audio/333.zh-cn.srt'addSubtitles = RealizeAddSubtitles('./audio/clip.mp4', srt_path)

参考网页

  1. https://blog.csdn.net/weixin_42081389/article/details/104322629
  2. https://www.mdeditor.tw/pl/p7Q8
  3. https://blog.csdn.net/weixin_46304253/article/details/109157104
  4. https://blog.csdn.net/jining11/article/details/108016151

python srt字幕与视频合并相关推荐

  1. 实用教程 | 03—合并:字幕与视频合并

    字幕预览: 将下载好的字幕和视频合并的具体步骤: 第1步:下载并安装视频转换合成工具"格式工厂". 第2步:将要合成字幕的视频添加到"格式工厂"中. 第3步:添 ...

  2. python 视频字幕合并_怎么把字幕和视频合并(教你两者合并方法)

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! PS:如有需要Python学习资料的小伙伴可 ...

  3. python srt字幕转lrc歌词文件

    当想要把电影或者视频的音频转成mp3在手机或者设备上听的时候,或者是用来练英语听力的时候,那么,就需要把相关的srt字幕文件,转换成lrc的歌词文件. 搜了很多网上的,都没有这个代码,只有lrc转sr ...

  4. Srt字幕的视频用它就能批量制作

    大量视频要批量的添加上srt字幕可以用什么方法来快速操作呢?其实很简单,今天小编就来教大家一个可以轻松给大量视频批量添加srt字幕的简单办法,感兴趣的小伙伴们可以进来查看具体的步骤! 首先大家在浏览器 ...

  5. 【python】使用python将多个视频合并、延长视频的时间

    今天做知识分享的时候,最后保存的视频时长是58分钟,那么如何改变视频的时长,将视频时长改为一个小时呢? 下面提供3个方案: 方案1,重新录,很显然,不合理:× 方案2,补录一段视频,和原先录制的进行合 ...

  6. Python 实现多个视频合并

    # from moviepy.editor import * from moviepy.video.fx import crop,VideoFileClip,concatenate_videoclip ...

  7. srt字幕怎么导入视频 (视频字幕合并教程)

    不知道怎么将srt字幕怎么导入视频?来看下这个简单的教程吧! 第一步: 首先,下载安装4K Video Downloader软件到你的电脑上,然后运行它. 第二步: 打开软件,然后选择"转换 ...

  8. python实现字幕挂载,将字幕文件与视频合并。

    注意:这只是简单的text文本挂载,如果需要实现srt,ass字幕文件,实现字体,字体大小,背景,颜色等,最好使用ffmpeg.本人最近正在使用ffmpeg,等过段时间把源代码开放出来. 其实超简单超 ...

  9. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

最新文章

  1. POJ 3268 D-Silver Cow Party
  2. hbase 单机 java api,HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子...
  3. 3、MySQL 8.0.20在Linux(centos 8)上搭建主从复制
  4. 前端学习(1883)vue之电商管理系统电商系统之每次只能打开一个菜单项并解决边框问题
  5. 完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现
  6. 有关VUE学习的经验(2)
  7. 变频器说明书_图解变频器接线方法
  8. C++模板的概念 定义和使用
  9. matlab 分块 矩阵 对角 合并
  10. 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)...
  11. 童年经典,任天堂switch红白机游戏
  12. OnTime pro for mac(多功能时钟工具)
  13. 软件工作量评估方法(一)
  14. react 学习之Protal
  15. java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...
  16. axios的一封装和二次封装
  17. 关于UC全民阅读的报告及带来的启发
  18. 谷歌浏览器关闭安全模式, 访问 http网站
  19. 线性空间,度量空间,赋范空间,线性赋范空间,内积空间,巴拿赫空间以及希尔伯特空间、拓扑空间
  20. P4408 [NOI2003] 逃学的小孩 题解

热门文章

  1. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...
  2. HTML5期末大作业:爱折扣电商购物网站设计——清新爱折扣电商购物网站(5页) HTML+CSS+JavaScript 关于电商的HTML网页设计-----网购
  3. 中国首个高速公路快充网络开通
  4. c++学习笔记day03
  5. joyui版本和android版本,黑鲨手机2 Pro 最新JOYUI12 DLTR2010300CN00MQ4 完美root 游戏宏功能 狩猎模式 精品刷机...
  6. 中国税务负担全球第二
  7. AcWing 850. Dijkstra求最短路 II(最短路)
  8. ArcGIS工具 - 导出空数据库
  9. kernel nf_conntrack: table full, dropping packet 解决办法
  10. notejs NPM切换到淘宝源