精华内容
下载资源
问答
  • 其中一个用Aegisub打开,这里打开英文字幕示例 任选一行,插入空白行方便之后插入中文字幕 打开中文字幕,全选复制粘贴后到之前在Aegisub的插入空白的行。 成功自动更改为以/N为转折符号的双语字幕 ...

    在这里插入图片描述
    其中一个用Aegisub打开,这里打开英文字幕示例
    在这里插入图片描述
    任选一行,插入空白行方便之后插入中文字幕
    在这里插入图片描述
    打开中文字幕,全选复制粘贴后到之前在Aegisub的插入空白的行。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    成功自动更改为以/N为转折符号的双语字幕

    在这里插入图片描述

    展开全文
  • ZProtect1.49修改版导出注册机中文字幕
  • 剪映专业版字幕导出随笔

    千次阅读 2021-03-14 12:16:12
    还在为视频没字幕发愁吗?还在绞尽脑汁导出视频字幕吗?

    剪映专业版字幕导出随笔

    最近有个识别视频中人声转成字幕并导出的小需求,找了一圈发现头条系的剪映专业版真好用,借助剪映专业版的识别字幕功能,以及抓包工具 fiddler 获取到字幕的json文件,实现“字幕导出”。特以此文纪念一下,截止2021年03月14日12:19:26,此方法有效,不排除剪映升级后方法可能失效。

    环境准备

    首先必须安装剪映专业版,如果您还没用过剪映专业版,请自行搜索关键字【剪映】下载安装;另外需要安装抓包工具,笔者安装的是【Fiddler】,值得注意的是需要开启 https 抓包模式。

    环境截图如下:

    • 剪映
      剪映专业版--Copy攻城狮

    • Fiddler
      抓包工具fiddler-Copy攻城狮
      数据处理我使用的 NodeJS,此处就不展开介绍了,如果您不会代码,可以搜索一下【剪映字幕转srt】

    字幕生成

    首先,我们将视频导入到剪映素材中,如下图所示,导入成功之后会生成视频预览,并且左边小窗上回显示已添加。
    剪映导入视频-Copy攻城狮
    接着,我们切换到到【文本-识别字幕】,点击【开始识别】,此时剪映专业版就会识别视频中的人声,并自动在时间轴上生成字幕文件。
    剪映识别字幕-Copy攻城狮

    字幕捕获

    然后呢,我们有条不紊地打开抓包工具,并开启 HTTPS 模式,这一步值得注意的是需要信任证书。fiddler开启https-Copy攻城狮

    这时我们最好加个筛选条件,只显示lv-pc-api.ulikecam.com这域下的请求,也就是剪映字幕处理的接口。如果此时字幕已处理完毕,则重新点下上文步骤中的【开始识别】按钮。
    在这里插入图片描述

    由于笔者处理的视频比较长,大概有一个半小时,因此生成字幕的时间比较久,也是笔者不慌不忙的原因,稍等片刻,发现 fiddler 不再吐新的请求信息了,最终https://lv-pc-api.ulikecam.com/lv/v1/audio_subtitle/query 这个接口返回的就是我们的字幕。
    剪映专业版本字幕抓取成功--Copy攻城狮

    字幕处理

    最后一步了,其实我们只需复制上一步抓到的JSON数据就实现了字幕导出。处理这个JSON数据的方式有很多,比如可以借助一些公开的小工具,把这个JSON数据直接转成SRT字幕文件,也可以通过编程语言来自行编写程序按照自己的需要来处理。笔者比较熟悉的是JavaScript,因此使用NodeJS来处理,最终生成文本格式的文件。

    先来看看笔者抓到的字幕数据格式:

    {
    	"ret": "0",
    	"errmsg": "success",
    	"svr_time": 1615699052,
    	"log_id": "202103141317310102121441631D8D72AD",
    	"data": {
    		"utterances": [{
    				"text": "直播课堂",
    				"start_time": 0,
    				"end_time": 896,
    				"words": [{
    						"text": "直",
    						"start_time": 0,
    						"end_time": 258
    					},
    					{
    						"text": "播",
    						"start_time": 258,
    						"end_time": 360
    					},
    					{
    						"text": "课",
    						"start_time": 360,
    						"end_time": 520
    					},
    					{
    						"text": "堂",
    						"start_time": 520,
    						"end_time": 896
    					}
    				]
    			},
    			{
    				"text": "又一次跟大家见面了",
    				"start_time": 2063,
    				"end_time": 3680,
    				"words": [{
    						"text": "又",
    						"start_time": 2063,
    						"end_time": 2240
    					},
    					{
    						"text": "一",
    						"start_time": 2240,
    						"end_time": 2400
    					},
    					{
    						"text": "次",
    						"start_time": 2400,
    						"end_time": 2576
    					},
    					{
    						"text": "跟",
    						"start_time": 2663,
    						"end_time": 2840
    					},
    					{
    						"text": "大",
    						"start_time": 2840,
    						"end_time": 2980
    					},
    					{
    						"text": "家",
    						"start_time": 2980,
    						"end_time": 3120
    					},
    					{
    						"text": "见",
    						"start_time": 3120,
    						"end_time": 3296
    					},
    					{
    						"text": "面",
    						"start_time": 3303,
    						"end_time": 3496
    					},
    					{
    						"text": "了",
    						"start_time": 3503,
    						"end_time": 3680
    					}
    				]
    			},
    			{
    				"text": "我还是大家熟悉的主持人美娜",
    				"start_time": 3680,
    				"end_time": 6656,
    				"words": [{
    						"text": "我",
    						"start_time": 3680,
    						"end_time": 3856
    					},
    					{
    						"text": "还",
    						"start_time": 3863,
    						"end_time": 4056
    					},
    					{
    						"text": "是",
    						"start_time": 4103,
    						"end_time": 4296
    					},
    					{
    						"text": "大",
    						"start_time": 4543,
    						"end_time": 4700
    					},
    					{
    						"text": "家",
    						"start_time": 4700,
    						"end_time": 4856
    					},
    					{
    						"text": "熟",
    						"start_time": 5023,
    						"end_time": 5216
    					},
    					{
    						"text": "悉",
    						"start_time": 5223,
    						"end_time": 5380
    					},
    					{
    						"text": "的",
    						"start_time": 5380,
    						"end_time": 5500
    					},
    					{
    						"text": "主",
    						"start_time": 5500,
    						"end_time": 5620
    					},
    					{
    						"text": "持",
    						"start_time": 5620,
    						"end_time": 5740
    					},
    					{
    						"text": "人",
    						"start_time": 5740,
    						"end_time": 5896
    					},
    					{
    						"text": "美",
    						"start_time": 6063,
    						"end_time": 6256
    					},
    					{
    						"text": "娜",
    						"start_time": 6263,
    						"end_time": 6656
    					}
    				]
    			}
    		]
    	}
    }
    

    因此,笔者的代码也非常简洁:

    const fs = require('fs')
    const rawdata = fs.readFileSync('./srt.json');
    const {data} = JSON.parse(rawdata);
     
    const {utterances} = data
    let txt = ''
    for(let i of utterances) {
        txt += i.text + '\n'
    }
    fs.writeFile('srt.txt', txt, function (err) {
        if (err) {
            return console.error(err);
        }
    });
    

    最终生成的txt文件如下图:
    剪映专业版字幕转txt--Copy攻城狮
    当然如果您需要处理时间,处理start_timeend_time这两个字段即可。

    小结

    本次分享就到这,其实整个步骤也非常简单,只是在剪映专业版识别字幕的基础上对识别请求进行抓包,最终获得JOSN数据。如果您有更好的处理方式,欢迎评论区留言与我分享。

    展开全文
  • Youtube视频字幕在线导出

    千次阅读 2021-01-13 14:54:43
    downsub 一款非常好用的将Youtube视频字幕在线到处工具,同时支持多种语言翻译,输出txt文件方便快捷。 链接: downsub.

    downsub

    一款非常好用的将Youtube视频字幕在线到处工具,同时支持多种语言翻译,输出txt文件方便快捷。

    链接: downsub.

    展开全文
  • [HTML] 纯文本查看 复制代码剪映 - 字幕导出工具label {user-select: none;}Windows 目录:C:\Users\Administrator\AppData\Local\JianyingPro\User Data\Projects\com.lveditor.draft\Android 目录:/data/data/...

    [HTML] 纯文本查看 复制代码

    剪映 - 字幕导出工具

    label {

    user-select: none;

    }

    Windows 目录:C:\Users\Administrator\AppData\Local\JianyingPro\User Data\Projects\com.lveditor.draft\

    Android 目录:/data/data/com.lemon.lv/files/newdrafts/

    设置换行符:

    \r\n (Windows)

    \n (Linux)

    ** 修改后需要重新生成

    输入 JSON

    {"platform": {"os": ""},"materials":{"texts":[{"content":"轨道一文本","id":

    "28824EDA-D841-4c81-B264-DC268957660B","type":"text"},{"content":"轨道二文本","id":"A4637647-EF07-418c-B2A4-6781EC9B6003",

    "type":"text"}]},"tracks":[{"id":"A891C42E-A9F6-41fa-89E4-5DD250F2D7D1","segments":[{"id":"624A1A67-15F8-499b-BDF4-0C949FFB383A",

    "material_id":"28824EDA-D841-4c81-B264-DC268957660B","target_timerange":{"duration":3000000,"start":0}}],"type":"text"},

    {"id":"45336909-80D9-4320-93C2-1737989C45FC","segments":[{"id":"7729B6F5-8C3D-46ee-A0F4-3D3FC5B82823","material_id":

    "A4637647-EF07-418c-B2A4-6781EC9B6003","target_timerange":{"duration":3000000,"start":2652233000}}],"type":"text"}]}

    生成 srt 文件

    清空

    输出 SRT

    // 输入文本域

    let inputText = document.getElementById('input-text');

    // 提示信息

    let hintSpan = document.getElementById('rn-hint');

    // 存储输出的 div 数组

    let outputDivArray = [];

    // 换行符

    let RN = '\r\n';

    function onChange(value) {

    switch (value) {

    case 'rn':

    RN = '\r\n';

    break;

    case 'n':

    RN = '\n';

    break;

    default:

    }

    if (outputDivArray.length) {

    hintSpan.style.display = 'inline-block';

    }

    }

    function onClearClick() {

    inputText.value = '';

    }

    function onGenerateClick() {

    try {

    hintSpan.style.display = 'none';

    // 如果上一次生成的 div 标签存在就移除掉

    let temp;

    while (outputDivArray.length) {

    temp = outputDivArray.pop();

    temp.parentNode.removeChild(temp);

    }

    // 剪映 json 对象

    temp = JSON.parse(inputText.value);

    let srtFiles = convertJSON2SRT(temp);

    let text;

    for (let k in srtFiles) {

    text = srtFiles[k];

    temp = document.createElement('div');

    temp.innerHTML = '' + text + '';

    temp.appendChild(getDownloadLink('jy_' + k + '.srt', text));

    document.body.appendChild(temp);

    outputDivArray.push(temp);

    }

    alert('生成完毕');

    } catch (e) {

    console.log(e);

    alert('JSON 解析错误');

    }

    }

    function convertJSON2SRT(jy) {

    // 平台系统

    let os = jy.platform.os;

    // 提取文本材料

    // Map 结构 = {id1: text1, id2: text2, ...}

    let texts = {}, temp = jy.materials.texts;

    for (let i in temp) {

    texts[temp[i].id] = temp[i].content;

    }

    // 轨道列表

    let tracks = jy.tracks, track;

    // SRT 文件 Map

    let srtFiles = {};

    for (let i in tracks) {

    track = tracks[i];

    temp = convertTrack2Srt(track, texts, os);

    if (temp) {

    srtFiles[track.id] = temp;

    }

    }

    return srtFiles;

    }

    /**

    * 将一条轨道转换为 srt 文本

    * @param track 轨道

    * @param texts 文本材料

    * @param milli 是否是毫秒单位

    * @return {string}

    */

    function convertTrack2Srt(track, texts, milli) {

    let segments = track.segments, segment;

    let srt = {content: null, start: null, end: null};

    let srtText = '', index = 0;

    for (let i in segments) {

    segment = segments[i];

    srt.content = texts[segment.material_id];

    if (!srt.content) continue;

    srt.start = segment.target_timerange.start;

    srt.end = srt.start + segment.target_timerange.duration;

    srt.start = getSrtTimeText(srt.start, milli);

    srt.end = getSrtTimeText(srt.end, milli);

    index++;

    srtText += formatSrt(index, srt);

    }

    return srtText;

    }

    /**

    * 获取下载地址的标签

    * @param fileName 文件名

    * @param data 数据

    * @returns {HTMLElement}

    */

    function getDownloadLink(fileName, data) {

    // 创建 a 标签

    let a = document.createElement('a');

    a.innerText = '保存到本地';

    a.download = fileName;

    //生成一个 blob 二进制数据,内容为数据

    let blob = new Blob([data], {type: 'application/octet-stream'});

    //生成一个指向 blob 的 URL 地址,并赋值给 a 标签的 href 属性

    a.href = URL.createObjectURL(blob);

    return a;

    }

    /**

    * 获取 SRT 格式的时间文本

    * @param time 时间,windows版本为微秒数

    * @param milli 是否是毫秒单位

    * @returns {string}

    */

    function getSrtTimeText(time, milli) {

    // 1h1m1s111ms = 61m1s111ms = 3661s111ms = 3661111ms

    if (!milli) {

    time = Math.floor(time / 1000);

    }

    // 余出的毫秒

    let millisecond = time % 1000;

    time = Math.floor(time / 1000);

    // 余出秒

    let second = time % 60;

    time = Math.floor(time / 60);

    // 余出分钟

    let minute = time % 60;

    time = Math.floor(time / 60);

    // 剩余时数

    let hour = time;

    hour = formatDigit(hour, 2);

    minute = formatDigit(minute, 2);

    second = formatDigit(second, 2);

    millisecond = formatDigit(millisecond, 3);

    return hour + ':' + minute + ':' + second + ',' + millisecond;

    }

    /**

    * 格式化为 SRT

    * @param index 字幕序号,从 1 开始

    * @param srt 字幕内容等信息

    * @returns {string}

    */

    function formatSrt(index, srt) {

    return index + RN + srt.start + ' --> ' + srt.end + RN + srt.content + RN + RN;

    }

    /**

    * 格式化数字

    * @param digit 数字

    * @param length 长度

    * @returns {string}

    */

    function formatDigit(digit, length) {

    let str = digit.toString();

    while (str.length < length) {

    str = '0' + str;

    }

    return str;

    }

    展开全文
  • 视频提取字幕工具2.0

    2020-07-10 21:24:35
    软件名称:视频取字幕工具 简介: 可以提取网页当中视频的字幕、支持中文、英文、粤语、日语,支持双语字幕,支持自动文字翻译,支持导出字幕、双语字幕、支持导出歌词格式
  • 将在「绘影字幕」中导出的SRT文件和视频文件导入PR CC 2017及以上版本中。(PR CC 2017有很多bug,有些操作无法完成,建议使用2018及以上版本。)2.修改字幕文件的帧速率以及视频信息。确保字幕信息与项目(序列)信息...
  • ZAM 3D 制作3D动画字幕 用于Xaml导出 原文:ZAM 3D 制作3D动画字幕 用于Xaml导出原地址->http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,...
  • 除此以外软件还支持导出字幕、双语字幕、导出歌词格式等多种功能,需要提取视频字幕的朋友可以下载使用哦。 视频字幕提取工具 软件特色 1、识别内容相同自动清空字幕。 2、启动识别后窗口自动最小化。 3、可以自
  • 随着手机影像硬件的进步, 普通人录制的视频也越来越多,为了提升视频观看体验,视频添加字幕...美中不足的是,无法导出标准的srt字幕,不过有开发者写了一个小工具剪映json转srt.exe, 可以将《剪映专业版》项目中保...
  • 小灰熊3.2版卡拉ok字幕制作软件可导出视频格式文件+注册码:内有安装说明,这版本可以直接导出视频格式字幕文件直接调到会声会影、AE、索尼vegas.pro等软件上使用。 先打开setup文件夹,双击setup.exe进行安装,安装...
  • 了解Camtasia字幕功能

    2019-11-27 15:30:55
    大家都知道:字幕,可以...Camtasia的字幕功能可不仅仅是简单的添加字幕,还包括同步字幕、导入字幕、导出字幕、语音转文本等功能。 下面我们就来分别了解一下这些功能的用法。 图 2:Camtasia字幕功能 添加字幕...
  • 回答:PRemiere导出视频画质变差是因为在导出时,比特率设置的是默认的数值,所以画质差。比特率与视频压缩的关系简单的说就是比特率越高画质就越好,但导出后的文件就越大;如果比特率越少则情况刚好翻转。具体设置...
  • AI自全动剪辑软件功能十分强大,可以自动配音,自动出字幕,利用百度人脸识别技术...不仅可以一键批量合成原创视频,还可以单独导出配音、单独导出字幕、单独导出不加配音与字幕的视频,并且可以自定义设置视频的时长。
  • 1、下载MP4。 2、加入素材。 3、提取字幕。 4、导出字幕
  • 字幕助手是一款免费利用语音识别技术的视频字幕添加软件,这款软件主打视频字幕剪辑和添加功能,能够一键快速添加字幕,同时能够快速导出srt字幕,该软件还具有一键去水印功能,软件可以将繁琐的视频字幕翻译制作...
  • 字幕助手是一款免费利用语音识别技术的视频字幕添加软件,这款软件主打视频字幕剪辑和添加功能,能够一键快速添加字幕,同时能够快速导出srt字幕,该软件还具有一键去水印功能,软件可以将繁琐的视频字幕翻译制作...
  • 文章目录第一步:下载软件第二步:导入视频素材第三步:等听译结束第四步:人工差错(识别难免有错)第五步:压制第六步:可导出字幕第七步:最重要的一步 第一步:下载软件 字幕制作工具 软件免费不收费!!!! ...
  • 如何使用VideoProc从MKV提取字幕?别急,小编今天给大家整理了使用Video...找到“导出字幕”选项,然后双击它。然后选择输出字幕文件格式。您也可以使用修整功能提取部分字幕。单击完成。 注意:如果在“工具箱”中没有
  • 字幕助手是一款免费利用语音识别技术的视频字幕添加软件,这款软件主打视频字幕剪辑和添加功能,能够一键快速添加字幕,同时能够快速导出srt字幕,该软件还具有一键去水印功能,软件可以将繁琐的视频字幕翻译制作...
  • premiere 加字幕

    2019-02-17 11:35:32
     第四步,选中刚在的字幕模板,文件—导出字幕,把刚才新建的字幕导出来    第五步,运行PrTitleCreator,把字幕模板和字幕txt文档导入,然后设定导出文件夹!    第六部,点击开始输出,输出字幕文件,导入...
  • 字幕酱是一款在线免费语音转字幕软件线上工具。 体验地址: https://www.zimujiang.com/ 主要功能 1.支持常见 flac,opus,mp3,m4a,wav,mp4 格式音视频自动生成字幕 2.支持中英日韩德法等语种 3.支持轻量级字幕...
  • 流行的字幕格式主要为ass(SubRip Text)、ssa(S Station Alpha)、srt(Advanced SubStation Alpha)、vtt(webvtt,类似于srt),不过日常中我最常见的是ass和srt,很少见到ssa字幕,如下面2张图,下载的字幕没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,128
精华内容 1,651
关键字:

怎么导出字幕