利用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编写生成树状结构的文件目录的脚本的教程
May 04 Python
pymongo给mongodb创建索引的简单实现方法
May 06 Python
scrapy爬虫完整实例
Jan 25 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
Python中字符串与编码示例代码
May 20 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
详解Python中第三方库Faker
Sep 25 Python
python 自动识别并连接串口的实现
Jan 19 Python
Python爬取某平台短视频的方法
Feb 08 Python
Django与数据库交互的实现
Jun 03 Python
Python必备技巧之字符数据操作详解
Mar 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
基于php缓存的详解
2013/05/15 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
javascript引导程序
2008/10/26 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
python爬取内容存入Excel实例
2019/02/20 Python
python五子棋游戏的设计与实现
2019/06/18 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
python实现画循环圆
2019/11/23 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
精彩的演讲稿开头
2014/05/08 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
开学典礼致辞
2015/07/29 职场文书