我在下载的udacity中教程时,字幕和视频是分离的,对于英文还无法完全听懂的我来说,字幕还是比较重要.不想看解释的可直接跳到最后复制代码运行即可.

查看了vtt和srt的区别,使用记事本打开vtt和srt,发现主要有两个

  1. 首行多了 WEBVTT\n\n 标识符
  2. 标点格式区别,vtt内部的"."在srt中为","

流程图:

基于python写了一个简单的脚本对其进行批量修改

  • 1 引入依赖

    1. os获取文件信息
    2. sys获取命令行输入args
    3. 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_list
  • 4 定义转换逻辑

  • 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 字幕 的相互转换的更多相关文章

  1. webvtt字幕转srt字幕的python程序(附改名程序)

    最近写了两个比较简单的python程序,原有都是由于看公开课感觉比较费劲,一个是下载的视频无用的名字太长,另一个就是下载的vtt字幕播放器不识别,写了一个vtt转换成str字幕格式的文件 vtt to ...

  2. SRT字幕格式

    [时间:2019-03] [状态:Open] [关键词:字幕,SRT,文件格式] 0 引言 视频文件中最简单.最常见的外挂字幕格式是SRT(SubRip Text).本人找了好久也没找到类似的标准文档 ...

  3. 【Win 10 应用开发】加载外部的 srt 字幕

    据说系统内置的多媒体功能支持 srt. ssa 等字幕,老周测试过几种格式的字幕均能加载. SRT 字幕是最简单的字幕结构,甚至你用记事本都能做出来,就是分为几行来写. 第一行是字幕的编号,应该是从1 ...

  4. Srt字幕文件解析

    // // ViewController.m // 字幕解析 // // Created by admin on 2018/8/30. // Copyright © 2018年 admin. All ...

  5. 探究:Adobe Premiere Pro CC 2018 导入SRT字幕显示不全问题

    问题:如果使用PR,大概率会遇到导入SRT格式的字幕文件后,PR里面显示的字幕不完整,字幕丢失的问题. 探究:字幕文件的内容正常,导入PR后字幕出现丢失. 查看字幕文件,并测试,发现如下图,如果出现字 ...

  6. srt字幕翻译

    需要把字幕名改成i.txt 有有道和谷歌 代码: #Author:Chenglong Qian #Copyright :Chenglong Qian import json import reques ...

  7. coursera网站中的VTT字幕的使用

    coursera网站中的VTT字幕的使用 1.https://www.coursera.org/learn/os-virtsecurity/lecture/xuWgP/1-3-cao-zuo-xi-t ...

  8. python3实战之字幕vtt与字母srt的相互转换

    关于 0.本文将介绍一个字幕格式vtt与srt相互转换的py脚本. 1.代码大部分出自: https://www.cnblogs.com/BigJ/p/vtt_srt.html 2.但是自己针对上面的 ...

  9. [UWP小白日记-5]转换MVA学院的XML字幕为SRT

    开源地址:第二版开源地址GIT 暂时用不了了,在最新的WIN10 10586.494系统上回闪退,正在酝酿第二版 O(∩_∩)O哈哈~ 新版已经完工:第二版 地方MVA上好多教程,但是微软的所有中国网 ...

随机推荐

  1. 使用 P3P 规范让 IE 跨域接受第三方 cookie

    前两天帮同事处理一个 js 跨域问题,使用 jsonp 跨域提交用户名密码请求,实现自动登录第三方网站,即 SSO(single-sign-on) 单点登录,一处登录处处登录.在 Chrome 下没问 ...

  2. linux下的几个cd命令

    linux cd命令 cd data 进入到 data 目录 cd .. 返回上级文件夹 cd ~ 返回用户主文件夹 cd / 返回根文件夹

  3. Atitit.故障排除系列---NoClassDefFoundError  NoClassDefFoundError ClassNotFoundException

    Atitit.故障排除系列---NoClassDefFoundError  NoClassDefFoundError ClassNotFoundException 1. java.lang.Class ...

  4. 第四篇: python函数续

    1.函数的嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其它函数 示例1: def bar(): print('from nbar') def foo(): print('from foo') ...

  5. git clone ....git

    [root@st153 git_test3]# git clone git@gitlab.gaobo.com:root/pythontest1.gitCloning into 'pythontest1 ...

  6. Unity3D和网页数据交互的基本原理

    简介: 1.Unity3D的游戏引擎是和编辑器集成在一起的,所有它也是一个制作/开发平台. 2.Unity3D是使用JavaScript.C#作为核心脚本语言来驱动事个游戏引擎. 3.平台可以发布Ex ...

  7. 【vijos】1882 石阶上的砖(中位数+特殊的技巧)

    https://vijos.org/p/1882 这种题很赞.. 以后记得这些绝对值最小的优先想中位数啊orz 首先我们将所有的高度都减掉他们的高度差,那么得到的应该是一串高低不平的数列,那么题目转化 ...

  8. 从零开始开发一个vue组件打包并发布到npm (把vue组件打包成一个可以直接引用的js文件)

    自己写的组件 有的也挺好的,为了方便以后用自己再用或者给别人用,把组件打包发布到npm是最好不过了,本次打包支持 支持正常的组件调用方式,也支持Vue.use, 也可以直接引用打包好的js文件, 配合 ...

  9. MathType与Origin是怎么兼容的

    MathType作为一款常用的公式编辑器,可以与很多的软件兼容使用.Origin虽然是一款专业绘图与数据分析软件,但是在使用过程中也是可以用到MathType.它可以帮助Origin给图表加上标签,或 ...

  10. ChemDraw Pro和ChemBio3D Ultra有什么区别

    作为ChemOffice 14的两个重要组件,ChemDraw Pro和ChemBio3D Ultra都有着自己的特点,ChemDraw Pro以绘制平面结构而ChemBio3D Ultra以绘制立体 ...