利用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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
Python实现类继承实例
Jul 04 Python
Python打印斐波拉契数列实例
Jul 07 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
python基础之文件处理知识总结
May 23 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字符串的编码问题的详细介绍
2013/04/27 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
详解php中的implements 使用
2017/06/13 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
Python self用法详解
2020/11/28 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
python中yield的用法详解
2021/01/13 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
青春励志演讲稿
2014/04/29 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
恋恋笔记本观后感
2015/06/16 职场文书