利用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正则表达式的使用范例详解
Aug 08 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python操作MongoDB详解及实例
May 18 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python生成特定分布数的实例
Dec 05 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
python 怎样进行内存管理
Nov 10 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模板页面中分页代码的解析
2009/02/06 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
PHP引用(&)各种使用方法实例详解
2014/03/20 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
图片onload事件触发问题解决方法
2011/07/31 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python文件写入实例分析
2015/04/08 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
对python3新增的byte类型详解
2018/12/04 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
医学生个人求职信范文
2014/02/07 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
离婚财产分配协议书
2014/10/21 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
新闻稿格式范文
2015/07/18 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Javascript webpack动态import
2022/04/19 Javascript