关于vtt 与 srt 字幕 的相互转换
我在下载的udacity中教程时,字幕和视频是分离的,对于英文还无法完全听懂的我来说,字幕还是比较重要.不想看解释的可直接跳到最后复制代码运行即可.
查看了vtt和srt的区别,使用记事本打开vtt和srt,发现主要有两个
- 首行多了 WEBVTT\n\n 标识符
- 标点格式区别,vtt内部的"."在srt中为","
流程图:
基于python写了一个简单的脚本对其进行批量修改
1 引入依赖
- os获取文件信息
- sys获取命令行输入args
- re对获取的文件内容进行匹配或更换
import os
import sys
import re
2 定义主函数
if __name__ == '__main__':
args = sys.argv
print(args) if os.path.isdir(args[1]):
file_list = get_file_name(args[1], ".vtt")
for file in file_list:
vtt2srt(file) elif os.path.isfile(args[1]):
vtt2srt(args[1])
else:
print("arg[0] should be file name or dir")3 定义获取文件名称函数get_file_name
def get_file_name(dir, file_extension):
f_list = os.listdir(dir) result_list = [] for file_name in f_list:
if os.path.splitext(file_name)[1] == file_extension:
result_list.append(os.path.join(dir, file_name))
return result_list4 定义转换逻辑
def vtt2srt(file_name):
content = open(file_name, "r", encoding="utf-8").read()
# 删除WEBVTT行 content = re.sub("WEBVTT\n\n",'',content)
# 替换“.”为“,”
content = re.sub("(\d{2}:\d{2}:\d{2}).(\d{3})", lambda m: m.group(1) + ',' + m.group(2), content) output_file = os.path.splitext(file_name)[0] + '.srt'
open(output_file, "w", encoding="utf-8").write(content) def srt2vtt(file_name):
content = open(file_name, "r", encoding="utf-8").read()
# 添加WEBVTT行 content = "WEBVTT\n\n" + content
# 替换“,”为“.”
content = re.sub("(\d{2}:\d{2}:\d{2}),(\d{3})", lambda m: m.group(1) + '.' + m.group(2), content) output_file = os.path.splitext(file_name)[0] + '.vtt'
open(output_file, "w", encoding="utf-8").write(content)5 完整代码
import os
import sys
import re def get_file_name(dir, file_extension):
f_list = os.listdir(dir) result_list = [] for file_name in f_list:
if os.path.splitext(file_name)[1] == file_extension:
result_list.append(os.path.join(dir, file_name))
return result_list def vtt2srt(file_name):
content = open(file_name, "r", encoding="utf-8").read()
# 删除WEBVTT行 content = re.sub("WEBVTT\n\n",'',content)
# 替换“.”为“,”
content = re.sub("(\d{2}:\d{2}:\d{2}).(\d{3})", lambda m: m.group(1) + ',' + m.group(2), content) output_file = os.path.splitext(file_name)[0] + '.srt'
open(output_file, "w", encoding="utf-8").write(content) def srt2vtt(file_name):
content = open(file_name, "r", encoding="utf-8").read()
# 添加WEBVTT行 content = "WEBVTT\n\n" + content
# 替换“,”为“.”
content = re.sub("(\d{2}:\d{2}:\d{2}),(\d{3})", lambda m: m.group(1) + '.' + m.group(2), content) output_file = os.path.splitext(file_name)[0] + '.vtt'
open(output_file, "w", encoding="utf-8").write(content) if __name__ == '__main__':
args = sys.argv if os.path.isdir(args[1]):
file_list = get_file_name(args[1], ".vtt")
for file in file_list:
vtt2srt(file) elif os.path.isfile(args[1]):
vtt2srt(args[1])
print('done')
else:
print("arg[0] should be file name or dir")注意:
1 为避免路径错误,请使用文件夹的绝对路径
- 代码基于python3.x
关于vtt 与 srt 字幕 的相互转换的更多相关文章
- webvtt字幕转srt字幕的python程序(附改名程序)
最近写了两个比较简单的python程序,原有都是由于看公开课感觉比较费劲,一个是下载的视频无用的名字太长,另一个就是下载的vtt字幕播放器不识别,写了一个vtt转换成str字幕格式的文件 vtt to ...
- SRT字幕格式
[时间:2019-03] [状态:Open] [关键词:字幕,SRT,文件格式] 0 引言 视频文件中最简单.最常见的外挂字幕格式是SRT(SubRip Text).本人找了好久也没找到类似的标准文档 ...
- 【Win 10 应用开发】加载外部的 srt 字幕
据说系统内置的多媒体功能支持 srt. ssa 等字幕,老周测试过几种格式的字幕均能加载. SRT 字幕是最简单的字幕结构,甚至你用记事本都能做出来,就是分为几行来写. 第一行是字幕的编号,应该是从1 ...
- Srt字幕文件解析
// // ViewController.m // 字幕解析 // // Created by admin on 2018/8/30. // Copyright © 2018年 admin. All ...
- 探究:Adobe Premiere Pro CC 2018 导入SRT字幕显示不全问题
问题:如果使用PR,大概率会遇到导入SRT格式的字幕文件后,PR里面显示的字幕不完整,字幕丢失的问题. 探究:字幕文件的内容正常,导入PR后字幕出现丢失. 查看字幕文件,并测试,发现如下图,如果出现字 ...
- srt字幕翻译
需要把字幕名改成i.txt 有有道和谷歌 代码: #Author:Chenglong Qian #Copyright :Chenglong Qian import json import reques ...
- coursera网站中的VTT字幕的使用
coursera网站中的VTT字幕的使用 1.https://www.coursera.org/learn/os-virtsecurity/lecture/xuWgP/1-3-cao-zuo-xi-t ...
- python3实战之字幕vtt与字母srt的相互转换
关于 0.本文将介绍一个字幕格式vtt与srt相互转换的py脚本. 1.代码大部分出自: https://www.cnblogs.com/BigJ/p/vtt_srt.html 2.但是自己针对上面的 ...
- [UWP小白日记-5]转换MVA学院的XML字幕为SRT
开源地址:第二版开源地址GIT 暂时用不了了,在最新的WIN10 10586.494系统上回闪退,正在酝酿第二版 O(∩_∩)O哈哈~ 新版已经完工:第二版 地方MVA上好多教程,但是微软的所有中国网 ...
随机推荐
- 百度语音识别demo:去掉离线识别功能
如果离线识别功能不是必须的,则为了减小包体积,可按下面方法将官方demo中的离线功能去掉: 1,删除loadOfflineEngine调用.2,删除data和license文件夹. 如此可使包体积减少 ...
- IOS 颜色 16进制 转换
#define RGB(r,g,b) ([UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]) #define HEXTO ...
- IoC容器Autofac学习笔记
一.一个没有使用IoC的例子 IoC的全称是Inversion of Control,中文叫控制反转.要理解控制反转,可以看看非控制反转的一个例子. public class MPGMovieList ...
- Android开发-状态栏着色原理和API版本号兼容处理
介绍 先上实际效果图,有三个版本号请注意区分API版本号 API>=20 API=19 API<19 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZX ...
- CCNA2.0笔记_VTP
VTP(VLAN Trunking Protocol) 一个能够宣告VLAN配置信息的信息系统: 通过一个共有的管理域,维持VLAN配置信息的一致性: VTP只能在trunk端口发送要宣告的信息: 二 ...
- 清理iOS中的“其他”空间垃圾文件
关于如何清理 iOS 里的"其他"空间的教程,网上搜索那是一大堆,不过都是对于2010年某坛某篇"技术文"的无数次简单复制粘帖,可行性已经被各路尝试者们踩到了地 ...
- iOS UITableViewHeaderFooterView设置背景色为透明
给UITableViewHeaderFooterView设置背景色分2种情况 1.tableView在group模式下,UITableViewHeaderFooterView的背景色默认是透明的,此时 ...
- Hive学习笔记——基本配置及测试
1.什么是Hive Hive 是建立在 Hadoop上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在Hadoop中的大规模数据的机 ...
- usb 安装系统
写在前面 本文是先安装windows再安装linux,并通过windows引导linux的启动项.这样方便linux的反复重装.折腾等. 光盘安装和U盘安装基本差不多,只是U盘安装多了把镜像文件写到U ...
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderList
最近在用idea部署war文件的时候,总是出现了部署失败的错误,刚开始并没有在意,但是现在次数越来越多了,不得不在意了,然后就在百度上搜,然后就有了各种说法 1,错误的信息是: One or more ...