python使用danmaku2ass 将xml字幕转换成ass字幕+ffmpeg将ass字幕合并成含有字幕的视频
文章目录
- 配置
- 说明:
- 一、使用danmaku2ass 将xml字幕转换成ass字幕
- 项目地址(记得给人家点个赞,我已经默默的点过了):
- 使用步骤:
- 1、将项目下载下来,
- 2、保留danmaku2ass.py文件(这个是主要的)
- 3、使用you-get下载一个B站视频
- 4、开始转换字幕
- 5、使用播放器打开视频就会出现字幕了
- 注意事项:
- 6、测试一下没有字幕文件的视频
- 二、ffmpeg将ass字幕合并成含有字幕的视频
- 0、来源
- 1、ffmpeg不会安装的参考我之前的博客:
- 2、ffmpeg一条命令合成字幕视频
- 3、将合成的视频单独复制到一个文件夹,看看是否含有字幕:
- 到此结束,又get到一个技能
- 三、将danmaku2ass.py文件打包成exe(后来补充)
- 1、灵感来源
- 2、看看you-get在哪里
- 3、打包开始:
- 1、不会打包参考:
- 2、直接打包命令:
- 4、将打包之后的danmaku2ass.exe复制到和you-get一样的目录下
- 5、测试是否成功
- 6、下载视频和字幕(前面有命令,我不解释了)
- 7、更改名字
- 8、打包命令:
配置
window10系统
python3.6
说明:
今天看到一个很好的GitHub,使用python将xml字幕合并成功ass字幕,如标题所说,注意完成俩件事:
- 使用danmaku2ass 将xml字幕转换成ass字幕
- ffmpeg将ass字幕合并成含有字幕的视频
一、使用danmaku2ass 将xml字幕转换成ass字幕
项目地址(记得给人家点个赞,我已经默默的点过了):
https://github.com/m13253/danmaku2ass
使用步骤:
1、将项目下载下来,
2、保留danmaku2ass.py文件(这个是主要的)
解压之后,只需要保留py文件,其他用不到,不过人家写的使用方法还是可以去读读,如果只想转下字幕,不读也可以,因为我已经花时间读过了,会用就行了。
3、使用you-get下载一个B站视频
如果不会使用you-get,可以看我之前的一个博客,如果看完会了可以给我点个赞哈,看不会找我算账(留言):
https://blog.csdn.net/weixin_42081389/article/details/87101229
测试视频推荐下载这个(也是我随便找的,字幕比较多,视频还不大,嘻嘻),你也可以随便下载一个含有字幕的,为了测试省时间,我没有下载项目推荐的哪一个太大的。
https://www.bilibili.com/video/av5075910
4、开始转换字幕
默认你会python呀,不会自己去B站或者其他网上学习吧。
记得先把字幕文件xml和视频名字改一下,因为cmd下中文影响,我这边改为001了:
python .\danmaku2ass.py -o .\001.ass -s 1920x1080 -fn "MS PGothic" -fs 48 -a 0.8 -dm 10 -ds5 .\001.xml
解释下命令:
项目原命令使用解释如图:
我的中文解释(根据自己需要,不够看项目吧)
- python .\danmaku2ass.py 这个不用将都懂了
- -o :后面是转换ass成功之后的报存地址和名称
- -s :像素这个我直接按项目的,没有改
- -fn : 指定的字体
- -a : 文本不透明度
- -fs :字体大小
- -dm :滚动字幕的时间(我的理解是出现在屏幕上的时间,默认是5秒,弄成之后,感觉太快了,后来就设置10秒)
- -ds :静态字幕的时间(默认5秒)
- 后面最后根据就是需要转换的xml字幕。
5、使用播放器打开视频就会出现字幕了
注意事项:
- 视频和字幕名称要一样
- 视频和字幕要在一个目录下面
效果图:
6、测试一下没有字幕文件的视频
新建一个文件夹,只复制视频过来。
二、ffmpeg将ass字幕合并成含有字幕的视频
0、来源
这个合成是我看到项目里面的一句话,就想着以前没有弄个,尝试一下。
1、ffmpeg不会安装的参考我之前的博客:
https://blog.csdn.net/weixin_42081389/article/details/90172120
2、ffmpeg一条命令合成字幕视频
这个就简单了,一条命令搞定:
ffmpeg -i .\001.flv -vf ass=001.ass -vcodec libx264 -acodec copy foo-with-danmaku.flv
命令解释:
- -i 后面跟的是视频文件
- -vf 后面跟单是字幕文件(-vf ass=字幕名字)
- -acodec copy 后面跟的就是后面合成之后的名字,可以自己更改
- -vcodec libx264 这个好像是视频的一种编码,我不太了解,反正不用更改。
3、将合成的视频单独复制到一个文件夹,看看是否含有字幕:
有图有真相,看图就懂了,基本上我截图都在一个位置,
到此结束,又get到一个技能
三、将danmaku2ass.py文件打包成exe(后来补充)
1、灵感来源
这个测试灵感是因为我想到you-get 可以直接使用,想着danmaku2ass.py文件是不是可以像you-get一样,不用前面的pytho,也能一样,然后开始测试寻找方法了。
2、看看you-get在哪里
3、打包开始:
1、不会打包参考:
如果不会打包的,参考我的另一个之前博客:
https://blog.csdn.net/weixin_42081389/article/details/94899316
2、直接打包命令:
pyinstaller -F .\danmaku2ass.py -i .\cbb7t-eo59j-001.ico
生成如图:
dist目录下面就是我们生成的exe
4、将打包之后的danmaku2ass.exe复制到和you-get一样的目录下
5、测试是否成功
进入cmd,然后命令:
- danmaku2ass :看看是否出现参数说明
- where danmaku2ass :是否出现位置
6、下载视频和字幕(前面有命令,我不解释了)
7、更改名字
8、打包命令:
是不是已经达到和you-get命令一样的效果了,嘿嘿
直接点开视频看看效果是不是一样,哈哈,果然一样。
截图给你看看
后面合成测试我就没有必要再弄了,至此打包使用结束了,觉得不错点个赞再走吧
python使用danmaku2ass 将xml字幕转换成ass字幕+ffmpeg将ass字幕合并成含有字幕的视频相关推荐
- Python 将字符串转换成单个字符;将单个字符合并成字符串
# 将字符串转换成单个字符: s = "kkjjasd" # 1 for i in s:print(i)# 2 k = list(s) print(k)# 3 g = set(s) ...
- 教你1个转换小技巧,免费多张jpg合并成pdf
工作中我们为了多张图片方便查看,一般会将其合并成一个pdf,今天小编和大家分享一个快速处理的方法,每天都可以免费转换,无需下载软件,打开搜索引擎,直接输入软件名称搜索,马上就可以进入网站的首页,界面简 ...
- 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
在利用Unix操作系统在实现一些具体应用的时候,可能需要把某些显示的结果进行行与行之间的合并.如现在需要用Unix操作系统设计一个彩票软件,每一张彩票上最多可以打印五注内容.在Unix操作系统的数据文 ...
- 多个ai文件合并成pdf_【多个ai文件合并成pdf】作文写作问答 - 归教作文网
怎么将多个AI PDF文件合成一个pdf文档 1.鼠标双击打开转换器,进入到转换器界面内后.鼠标点击左侧各项功能选项中的PDF的其他操作选项.接着再点击下方出现的PDF合并选项. 2.然后就需要把合并 ...
- 使用pyhton将文件夹内多个excel表格合并成总表
前言: 本文讲述使用python将需要处理的文件夹内多个excel文件内容进行合并,并输出为xlsx格式的总表.就比如一个文件夹里又有许多子文件夹,这些子文件夹里分布有excel文件,这里的pytho ...
- git 几个commit点合并成一个commit点
在用git做版本控制器的时候,经常会遇到以下情况: 1.在做1个功能的时候,你自己觉得代码没问题了,就本地commit,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方, ...
- python矩阵变成图片_Python图片转换成矩阵,矩阵数据转换成图片
# coding=gbk from PIL import Image import numpy as np # import scipy def loadImage(): # 读取图片 im = Im ...
- Python 将json字幕转换歌词lrc格式
B站支持json字幕,但下载音乐视频下来之后,转换为音频,没有字幕,很不爽,索性直接写一段Python代码将json格式的字幕转换成lrc 代码如下: # -*- coding:utf-8 -*-im ...
- php处理微信返回xml数据,php将微信返回的xml格式转换成数组
废话不多说直接上代码 代码<?php header("Content-type: text/html; charset=utf-8"); date_default_timez ...
最新文章
- KDTable的列绑定F7控件方法
- MySQL导出表结构相关字段以及把字段由下划线转驼峰命名
- 三行情书代码_用三行代码优化您的交易策略
- 阻止页面双击选中文本
- Elastic Jeff Yoshimura:开源正在开启新一轮的创新 | 人物志
- MATLAB函数随笔之计算篇
- 遇见不在洛谷收藏里的好题(并没有做)
- nginx上传目录配置,禁止执行权限
- 2012智能管道技术创新与应用实践论…
- wordpress 如何移除管理后台仪表盘小工具
- c语言贪吃蛇(简易版本含完整代码)
- html和css实现导航条
- 团队作业九---项目验收与总结
- 02-----音频通道数、采样频率、采样位数、采样个数(样本数)的概念及计算一帧音频的大小、每秒播放的音频字节大小、一帧的播放时长、音频重采样
- iphone的照片如何同步到mac
- mame 游戏铁钩船长/拳皇97 支持多手柄,电视遥控器~~
- java反序加密_对java程序加密防止反编译
- ESP32基础应用之使用两个ESP32通过阿里云物联网平台实现相互通信
- 西门子dcs系统组态手册下载_不懂PLC,SCADA,也能通俗易懂的了解DCS(分布式控制系统)...
- Mybatis错误 Result Maps collection already contains value for xxx