关键词:
0.问题
-
经常要剪视频,有时候自己讲的希望能加个字幕,但是网上基本都是收费的,而且对于我这种做视频没什么收入的UP主来说有点贵了。所以一直在寻找一个便捷一点的或者说省钱一点的方法。
-
但是手机上发现有个软件效果还不错,每天免费30分钟:
显示是会员有30分钟,会员就是注册一下。
- 快剪辑快字幕功能操作流程如下
-
新建项目
-
选择要生成字幕的视频
-
选择原始比例(可以随便)
-
选择一段要自动生成字幕的片段点生成
-
编辑调整字幕
其实到这里的话已经可以生成字幕达到目的了,但是快剪辑的字幕生成慢,而且不好剪辑,想导出到srt字幕文件到电脑上一起完成剪辑。
1.解决
- 在应用存储文件夹下找到了这个文件
里面的内容,疑似json保存的项目工程文件
用JSON格式化工具看发现,字幕是在stickerlist属性下的text属性,开始和结束时间分别是startTime属性和endTime属性,时间是视频开始到当前的毫秒数。
- 于是我利用这个文件,用Python写了一个提取字幕的脚本
#!/usr/bin/python
# coding=UTF-8
import json
import time
import srt
from datetime import timedelta
def FlowlogToSrt(log):
#解析Json为字典
fldict = json.loads(log)
#获取字幕列表
stickerlist = fldict[‘stickerlist‘]
#取出字幕
index = 0
subs = []
for sticker in stickerlist:
#序列号
index = index + 1
#开始时间
startTime = timedelta(milliseconds = sticker["startTime"])
#结束时间
endTime = timedelta(milliseconds = sticker["endTime"])
#内容
text = sticker["text"]
#转成srt对象,并存入列表
subs.append(srt.Subtitle(index=index, start=startTime, end=endTime, content=text))
#转成srt
srtText = ""
for sub in subs:
srtText = srtText + sub.to_srt()
print(srtText)
#写入文件
filename = "KuaiJianJiSticker"+time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime())+".srt"
with open(filename, ‘w‘, encoding="utf-8") as file_object:
file_object.write(srtText)
if __name__ == "__main__":
txt = input("请输入手机快剪辑flowlog数据:(数据位于/Android/data/com.qihoo.qeditor/files/keyfiles/flowlog下)
")
FlowlogToSrt(txt)
-
把那个文件上传到电脑,输入到代码里
但是好像文件太大了,因为我的是35分钟的会议,基本都有人在说话。 -
那只好提取出有用的部分咯
于是在JSON在线格式化这里格式化了一下代码,把结果放到另外一个文件里。
用Java写了以下代码,用于提取出大致的JSON结构和所需要的部分属性:
package clearJSON;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main
//文件路径
static String Path = "D:/eclipse-workspace/clearJSON/clearJSON/json.txt";
//结果缓存
static StringBuilder res = new StringBuilder();
public static void main(String[] args) throws IOException, InterruptedException
//行数统计
int lineNumber = 0;
//读取文件
FileInputStream fis=new FileInputStream(Path);
InputStreamReader isr=new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line=br.readLine())!=null)
lineNumber++;
//结构保留
if(line.indexOf(‘‘)!=-1 || line.indexOf(‘‘)!=-1)
add(line);
//保证添加的不是空对象
if((line=br.readLine())!=null)
//结构里至少有一个属性,添加以“”开头的下一行
add(line);
continue;
//属性保留,需要的属性可以以此类推添加到这里
if(line.indexOf(""startTime"")!=-1 || line.indexOf(""text"")!=-1 || line.indexOf(""endTime"")!=-1)
add(line);
br.close();
fis.close();
//输出结果
System.out.println("一共处理文件行数:"+lineNumber);
//输出精简后的JSON代码
Thread.sleep(2000);
System.out.println(res.toString());
/**
* 添加文本到缓存里
* 完成对结构的判断,依靠‘’在第一个字符判断是一组属性的结尾,
* 然后删除上一行行末的‘,’
* @param str 要添加的文字
*/
public static void add(String str)
//判断是不是一组属性的结尾
if(str.trim().indexOf(‘‘) == 0)
//删除上一行行末的逗号
res.deleteCharAt(res.length()-1);
//添加到缓存
res.append(str);
-
把JSON代码精简到了原来大小的8.6%:
-
之后再输入到Python里。
成功生成SRT文件! -
导入到ARCTIME中:
成功导入到ARCTIME中!
2.总结
- 基本完成了需求,但是步骤有些麻烦。
- 今后可以尝试合并Java和Python的部分。
- 写这篇文章的原因主要还是没钱。
pr生成字幕的方法以及好看的字幕背景
作为一个视频编辑者,最好的模板样式应该是(窗口——》工作区——》编辑)如果缺少工作区,要么找窗口,要么找三条杠。。。1.文字工具点击之后,即可在视频编辑,在效果控件改变样式2.文件——》新建&md... 查看详情
学习openstack的方法论-每天5分钟玩转openstack(150)
作为OpenStack的核心教程,我们已经到了最后总结的部分。OpenStack目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder和Neutron。请大家看下图:此图截自 https://www.openstack.org/software/project-n... 查看详情
宝藏系列推荐几款免费的视频转文字字幕的软件
...的车神🥇⚡About—>车神:从寝室到实验室最快3分钟,最慢3分半(半分钟献给红绿灯)📝个人主页:车手只需要车和手,压力来自论文_府学路18号车神_CSDN博客🥇官方认证:人工智能领域... 查看详情
html5video视频字幕的使用和制作(代码片段)
...下是三种最常用的格式1、ogg格式:带有Theora视频编码(免费)+Vorbis音频编码的Ogg文件(免费)支持的浏览器:firefox、chrome、opera2、MPEG4格式:带有H.264视频编码(收费)+AAC音频编码的MPEG4文件(收费)支持的浏览器:safari、chrom... 查看详情
让discord机器人每天自动做一些事情。(代码片段)
我是java脚本和discord编程的新手,我想在我的discord服务器上安装一个机器人,在早上5点进行频道清理,但是,我想在专用服务器上运行它,不知道如何正确设置时间触发机制。if(date.getHours()==5)//dostuff工作?答案你可以使用client.... 查看详情
每天每分钟开始时的 API 请求 [重复]
】每天每分钟开始时的API请求[重复]【英文标题】:APIrequestatthebeginningofeachminuteoftheday[duplicate]【发布时间】:2021-07-1723:23:23【问题描述】:我正在使用json.load来发出API请求。我想自动化它,以便它在每分钟的第一秒发出请求,从... 查看详情
用剪映将无字幕的英文视频翻译成中文字幕(附教程+软件)
...击生成,下载字幕文件rst格式或txt格式到本地。使用教程:1.导入英文视频2.识别成一段英文视频,如下图3.此时字幕是“英文字幕”,如上图。退出软件(切记一点要退出剪映软件),现在需要用字幕... 查看详情
果子学院springboot源码解析视频教程
目录:第1节SpringBoot介绍,源码阅读环境搭建,插件安装[免费观看]00:13:12分钟 第2节Spring源码阅读环境搭建[免费观看]00:19:58分钟 第3节SpringApplication初始化[免费观看]00:20:47分钟%h8p;L%a2b&u‘S第4节SpringApplicationrun方法解析(1)--... 查看详情
为啥 DirectShow 加载视频字幕文件?
】为啥DirectShow加载视频字幕文件?【英文标题】:WhyDirectShowloadvideosubtitlefile?为什么DirectShow加载视频字幕文件?【发布时间】:2017-06-3001:31:20【问题描述】:我使用这个类(来自CodeProject的found,删除了一些方法和属性以减少代... 查看详情
如何去除视频内的字幕和台词?最新4种方法汇总
对于很多自媒体和视频剪辑从业者来说,视频去文字和水印是家常便饭了,经常需要去除各种视频中的文字。那么如何去除视频中的文字(字幕)呢?随着科技的发展,AI人工智能技术在音视频的应用也越... 查看详情
youtube-dl 不下载自动生成的字幕
】youtube-dl不下载自动生成的字幕【英文标题】:youtube-dldoesnotdownloadauto-generatedsubtitles【发布时间】:2020-12-1720:46:44【问题描述】:我正在尝试下载视频的播放列表,所有视频都带有自动生成的字幕,但是当我插入标记--write-sub/--... 查看详情
获取只有字幕 Youtube API 的视频列表
】获取只有字幕YoutubeAPI的视频列表【英文标题】:GetListofVideosthatOnlyHaveSubtitlesYoutubeAPI【发布时间】:2020-11-0415:28:30【问题描述】:我有一个可以使用YoutubeAPI搜索视频的Python代码。我的输出目标是检索只有字幕/CC的视频,就像You... 查看详情
4个高质量自学网站每天只要5分钟,受益一生!
...网站:1.51学习网是一个专业的自学网站,提供我要自学网教程:自学CAD、自学pro/e、自学C语言等计算机辅助设计、图形图像、计算机编程、计算机基础等的自学知识点,应有尽有。2.办公资源一个专业的office教程网站。现在走到哪... 查看详情
git+jenkins持续集成三-定时构建语法
...H/15****每30分钟构建一次:H/30****每2小时构建一次:HH/2***每天早上8点构建一次:08***每天中午下班前定时构建一次:012***每天下午下班前定时构建一次:018***每天的8点,12点,22点,一天构建3次:08,12,22***一个小时的前30分钟,每... 查看详情
python基础教程(入门教程),30分钟玩转python编程!(代码片段)
这是一篇针对初学者的 [Python]基础教程,只要你认真阅读,花费30分钟即可快速了解Python。这篇Python入门教程讲解的知识点包括:Python编程环境的搭建、Python基本操作入门、Python数据类型、Python语句和函数。Python环境... 查看详情
解决方案视频字幕生成+自动翻译字幕(中英,中法视频,双语字幕制作)
problem有一个没有字幕的外语视频,要生成一个中外双字幕的视频。1、字幕生成:语音识别使用Netch为pyTranscriber提供本机代理,并用pyTranscriber一键上传通过开源API生成视频相应语言的字幕。Netch下载:https://github.co... 查看详情
请问quartz的每天2:30至22:30之间每隔十分钟触发的cron表达式为“030/10
-22**?”正确吗?参考技术A030/10-22**?这样貌似是10-22点每个半小时触发一次追问提交有误,是030/102-22**?意思是2点至22点的30分开始的每隔十分钟 查看详情
30分钟掌握dart语言(代码片段)
在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型、方法甚至null都是对象,所有的对象都是继承自Object虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推断变量类型Dart支持范型,List<int>表示... 查看详情