利用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的Flask框架与数据库连接的教程
Apr 20 Python
探究Python中isalnum()方法的使用
May 18 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
python构建深度神经网络(DNN)
Mar 10 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
Python3中的bytes和str类型详解
May 02 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
pytorch 移动端部署之helloworld的使用
Oct 30 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
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
社区活动总结报告
2014/05/05 职场文书
大学生村官入党自传
2015/06/26 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang