利用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字符串关键点
Dec 13 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
在python中实现强制关闭线程的示例
Jan 22 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
Python实现Linux监控的方法
May 16 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
python实现超市商品销售管理系统
Oct 25 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Python机器学习之基础概述
May 19 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
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php实现搜索类封装示例
2016/03/31 PHP
javascript实现全角与半角字符的转换
2015/01/07 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
AngularJS入门之动画
2016/07/27 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
员工拓展培训方案
2014/02/15 职场文书
教师党员承诺书
2014/03/25 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
二审答辩状格式
2015/05/22 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
2019军训心得体会
2019/06/27 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python