利用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 相关文章推荐
用pickle存储Python的原生对象方法
Apr 28 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
matplotlib作图添加表格实例代码
Jan 23 Python
python设置环境变量的原因和方法
Jun 24 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
python批量提取图片信息并保存的实现
Feb 05 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中常用的转义函数
2014/02/28 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
php生成HTML文件的类方法
2019/10/11 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python学习之编写查询ip程序
2016/02/27 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
护理学应聘自荐书范文
2014/02/05 职场文书
成人继续教育实施方案
2014/03/01 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2014年社区工作总结
2014/11/18 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers