利用Python实现字幕挂载(把字幕文件与视频合并)思路详解


Posted in Python onOctober 21, 2020

其实超简单超简单!python好现成的库,一下子省略了好多步骤!

本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置!

需要用到的环境

  • python(基本上只要不是很老的就行)
  • pip(这个其实python版本>2.8.9或者>3.4的都自带了),可以通过cmd命令pip -V查询是否安装了,没有的话就输入命令

需要用到的工具:

我用的是pycharm,用来写python代码的。
Flie->setting->Project:Test->project Interpreter:

利用Python实现字幕挂载(把字幕文件与视频合并)思路详解

点击右边的+号:在搜索栏输入需要用到的三方库,然后点击install:

需要用要的三方库

  • moviepy(在上面的pycharm工具中可以直接下载或者用pip指令pip install moviepy)
  • ImageMagick(1.去官网直接下http://www.imagemagick.org/script/download.php,根据你操作系统的版本,一路next,我记得有个add to path的选项!一定要勾选,因为他自动吧安装路径添加到环境变量path中了,不然就要手动去加path了。2.我的版本是64位的,不想去官网的可以用我的百度云下载:链接: https://pan.baidu.com/s/1gWE_SwMVm3bEzrGvtixqaQ 提取码: cykj)

和上一篇下载视频一样用俩个py文件吧

一个是AddSubtitles.py(启动类):

# 使用RealizeAddSubtitles类的方法
from core.RealizeAddSubtitles import RealizeAddSubtitles

if __name__ == '__main__':
 '''调用方法示例'''
 addSubtitles = RealizeAddSubtitles('d:/python/DownLoadVideo/Fong.mp4', 'd:/python/DownLoadVideo/Love.txt')

一个是RealizeAddSubtitles.py(实现类)

from os.path import splitext, isfile

from moviepy.editor import (VideoFileClip,
  TextClip,
  CompositeVideoClip)


class RealizeAddSubtitles():
 '''
 合成字幕与视频
 '''
 def __init__(self, videoFile, txtFile):
 self.src_video = videoFile
 self.sentences = txtFile
 # src_video = input('请输入视频文件路径')
 # sentences = input('请输入字幕文件路径')
 if not (isfile(self.src_video) and self.src_video.endswith(('.avi', '.mp4')) and isfile(
 self.sentences) and self.sentences.endswith(
 '.txt')):
 print('视频仅支持avi以及mp4,字幕仅支持txt格式')
 else:
 video = VideoFileClip(self.src_video)
 # 获取视频的宽度和高度
 w, h = video.w, video.h
 # 所有字幕剪辑
 txts = []
 with open(self.sentences, encoding='utf-8') as fp:
 for line in fp:
  sentences, start, span = line.split(': ')
  start, span = map(float, (start, span))
  txt = (TextClip(sentences, fontsize=40,
   font='SimHei', size=(w - 20, 40),
   align='center', color='white')
  .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}_带字幕{ext}')

下面的图片是字幕文件的格式:字幕: 开始时间: 持续时间

利用Python实现字幕挂载(把字幕文件与视频合并)思路详解

​如果报一个imagemagick uninstall什么的错误,原因是因为windows下的imagemagick需要手动导入。
一般在pycharm中,是在你创建的项目中有个venv->Lib->site-packages->moviepy->config_defaults.py。
将IMAGEMAGICK_BINARY后面的=号中的值手动改成你imagemagick安装的路径下的一个magick.exe。
列如:IMAGEMAGICK_BINARY = r"D:\python\ImageMagick-7.0.10-Q16-HDRI\magick.exe"

总结

到此这篇关于如何利用Python实现字幕挂载把字幕文件与视频合并的文章就介绍到这了,更多相关Python实现字幕挂载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
python数据封装json格式数据
Mar 04 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
Python加载带有注释的Json文件实例
May 23 Python
python用户评论标签匹配的解决方法
May 31 Python
python游戏地图最短路径求解
Jan 16 Python
python 命令行传入参数实现解析
Aug 30 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
Python读写csv文件流程及异常解决
Oct 20 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
基于python爬取链家二手房信息代码示例
Oct 21 #Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 #Python
Python为何不支持switch语句原理详解
Oct 21 #Python
基于Python爬取素材网站音频文件
Oct 21 #Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 #Python
运行Python编写的程序方法实例
Oct 21 #Python
Python读写csv文件流程及异常解决
Oct 20 #Python
You might like
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php生成无限栏目树
2017/03/16 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
Vue中props的详解
2019/05/16 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
解决vue 退出动画无效的问题
2020/08/09 Javascript
实例讲解Python中的私有属性
2014/08/21 Python
Python深入学习之上下文管理器
2014/08/31 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
python中import学习备忘笔记
2017/01/24 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
python获取代理IP的实例分享
2018/05/07 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
医学类导师推荐信范文
2013/11/19 职场文书
2015年企业新年寄语
2014/12/08 职场文书
鲁冰花观后感
2015/06/10 职场文书
摘录式读书笔记
2015/07/01 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
python标准库ElementTree处理xml
2022/05/20 Python