利用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的While循环语句的使用方法
Oct 13 Python
详解python中的 is 操作符
Dec 26 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
Python数据类型之String字符串实例详解
May 08 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
pytorch实现MNIST手写体识别
Feb 14 Python
python字典的值可以修改吗
Jun 29 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
Python headers请求头如何实现快速添加
Nov 03 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
Python Selenium操作Cookie的实例方法
Feb 28 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
第七节--类的静态成员
2006/11/16 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
php常用的工具开发整理
2019/09/26 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
django中的setting最佳配置小结
2017/11/21 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
生物技术专业毕业生求职信范文
2013/12/14 职场文书
高中的职业生涯规划书
2013/12/28 职场文书
七年级数学教学反思
2014/01/22 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
大型会议策划方案
2014/05/17 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
成绩报告单家长评语
2014/12/30 职场文书
给上级领导的感谢信
2015/01/22 职场文书