利用FFmpeg 转换课程vtt 字幕到 srt字幕

news2024/11/15 21:39:52

字幕转换工具

        经常学习udemy 视频课程的,可能知道,从网络下载的udemy 课程文件里面有时候字幕是vtt 格式的,有时候想导入到百度网盘里面,怎奈百度网盘,不支持vtt 字幕格式。有字幕的时候,会比较好多了。既可以学习技术,又可以学习外语。

        首先我们先看下这两种格式的不同。

VTT(WebVTT)

VTT(WebVTT)和SRT(SubRip)是常见的字幕格式,用于在视频或音频中显示文字。

VTT(WebVTT)格式:

  • VTT是一种基于文本的字幕格式,用于在HTML5视频播放器中显示字幕。
  • 它支持更多的文本样式和布局选项,如字体样式、位置和对齐方式。
  • VTT格式还支持以毫秒为单位的时间码,提供更高的时间精度。
  • 它可以包含更多的元数据信息,如章节标记和语言标签。
  • VTT格式的文件可以直接在Web页面中嵌入,无需额外的转换工具。
SRT(SubRip)格式:
  • SRT是一种简单的文本格式,用于在各种媒体播放器中显示字幕。
  • 它是一种较早的字幕格式,因此在广泛使用的播放器和编辑工具中都得到支持。
  • SRT格式具有简洁的结构,易于创建和编辑。
  • 它是一种纯文本格式,可以直接在文本编辑器中打开和修改。
  • SRT文件通常较小,适用于网络传输和存储。
优缺点总结

两者的优缺点总结如下

VTT格式的优点:

  • 支持更多的文本样式和布局选项。
  • 提供更高的时间精度。
  • 能够包含更多的元数据信息。
  • 可以直接在Web页面中嵌入。

VTT格式的缺点:

  • 由于其较新的特性,不是所有的播放器和编辑工具都对VTT格式提供完全支持。

SRT格式的优点:

  • 得到广泛支持,适用于各种播放器和编辑工具。
  • 结构简洁,易于创建和编辑。
  • 是一种纯文本格式,易于处理和存储。

SRT格式的缺点:

  • 不支持一些高级的文本样式和布局选项。
  • 时间精度较低。
  • 包含的元数据信息较少。

汇总起来,如下表格所示

优点缺点
VTT
  • 支持更多的文本样式和布局选项。
  • 提供更高的时间精度。
  • 能够包含更多的元数据信息。
  • 可以直接在Web页面中嵌入。
由于其较新的特性,不是所有的播放器和编辑工具都对VTT格式提供完全支持。
SRT
  • 得到广泛支持,适用于各种播放器和编辑工具。
  • 结构简洁,易于创建和编辑。
  • 是一种纯文本格式,易于处理和存储。
  • 不支持一些高级的文本样式和布局选项。
  • 时间精度较低。
  • 包含的元数据信息较少。

这就涉及到转换,如何高效自动转换 vtt 格式到 srt 格式。我网上找了下发现FFmpeg支持,我思考了下,写了个批量脚本进行转换,这里分享给大家。

到家使用的的时候,下载一个ffmpeg 包就可以。

@echo off
setlocal enabledelayedexpansion

set "ffmpeg_path=C:\D_Drive\software\ffmpeg-4.3.1-2021-01-01-essentials_build\bin\ffmpeg.exe"
set "source_dir=C:\D_Drive\udemy\os\The Big Picture 2023-8\"

for /r "%source_dir%" %%i in (*.vtt) do (
    set "input_file=%%i"
    set "output_file=%%~dpni.srt"
    "%ffmpeg_path%" -i "!input_file!" "!output_file!"
)


cmd /k

大家使用需要注意

1.下载最新的ffmpeg 包,解压,上述脚本ffmpeg_path 目录改为自己的目录工具地址,指定到可执行文件

2.更改source_dir 为自己的资源目录,这个目录里面有你需要转换的vtt 字幕文件

3.文件名称保存为 transfervtt_srt.bat 

4.双击运行transfervtt_srt.bat 文件,既可转换

脚本主要原理,调用目录里面的每个.vtt文件,执行转换,并且保存文件名称为 对应文件名称.srt

cmd /k 主要效果是,保证脚本执行完,不立即关闭屏幕,这样用户可以查看执行日志。

运行效果

同目录下文件:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ollama、FastGPT大模型RAG知识库结合使用案例

参考: https://ollama.com/download/linux https://doc.fastai.site/docs/intro/ https://blog.csdn.net/m0_71142057/article/details/136738997 https://doc.fastgpt.run/docs/development/custom-models/m3e/ https://concise-eater-d47.notion.site/Ollama-Fastgpt-b170…

# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境

从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(1) 段子手168 1、打开 idea 创建父工程 创建 artifactId 名为 spring_cloud_demo 的 maven 工程。 --> idea --> File --> New --> Project --> Ma…

树莓派使用总结

手上拿到了一块Raspberry Pi 4B板子。研究一下怎么用。 安装系统 直接到官网【Raspberry Pi 】下载在线安装助手 安装好后,打开软件,选择好板子型号、系统、TF卡,一路下一步就行。 树莓派接口 直接查看官方的资料【Raspberry Pi hardwar…

Docker Volume (存储卷)

什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着,当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。在宿主机上…

接口压力测试 jmeter--增强篇(二)

前期准备 1. JMeter的插件的安装 下载Jmeter Plugins Manager对插件进行管理 (1)下载地址:https://jmeter-plugins.org/install/Install/ (2)下载后,将jar包放到jmeter包目录下/lib/ext目录下 &#xff0…

绝对隔离+底层限制,成就猎鹰蜜罐“牢不可破”的立体化安全

前言 自网络诞生以来,攻击威胁事件层出不穷,网络攻防对抗已成为信息时代背景下的无硝烟战争。然而,传统的网络防御技术如防火墙、入侵检测技术等都是一种敌暗我明的被动防御,难以有效应对攻击者随时随地发起的无处不在的攻击和威胁…

MySQL学习笔记3——条件查询和聚合函数

条件查询和聚合函数 一、条件查询语句二、聚合函数1、SUM()2、AVG()、MAX()、MIN()3、COUNT() 一、条件查询语句 WHERE 和 HAVING 的区别: WHERE是直接对表中的字段进行限定,来筛选结果;HAVIN…

BUG:vue表单验证校验不报错,必填都有信息,就是不能正常往下进行

vue表单验证未报错却出现异常 框架bug场景解决办法 框架 UI:element-UI 前端:vue2 bug场景 正常表单里面,有的信息要求必填或者加了一些限制,作为校验验证,只有走到校验才会执行其他行为,比如调用保存接…

在 Linux 终端中创建目录

目录 ⛳️推荐 前言 在 Linux 中创建一个新目录 创建多个新目录 创建多个嵌套的子目录 测试你的知识 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 前言 在本系列的这一部…

微服务之CircuitBreaker断路器

一、概述 1.1背景 在一个分布式系统中,每个服务都可能会调用其它的服务器,服务之间是相互调用相互依赖。假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务。这就是构成所谓“扇出”。 如果扇出的链路上某个微服务的调…

【详细的Kylin使用心得】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【任务调度】Apache DolphinScheduler快速入门

Apache DolphinScheduler基本概念 概念:分布式、去中心化、易扩展的可视化DAG工作流任务调度系统。 作用:解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。Apache DolphinScheduler是一款开源的调度工具&#xff…

高仿小米商城用户端

高仿小米商城用户端(分为商城前端(tongyimall-vue)和商城后端(tongyimall-api)两部分),是Vue SpringBoot的前后端分离项目,用户端包括首页门户、商品分类、首页轮播、商品展示、商品推荐、购物车、地址管理、下订单、扫码支付等功能模块。 …

邮箱群组是什么?怎么创建邮箱群组?

在我们群发邮件时,可能会遇到这样的状况,一个个输入邮箱地址效率很低,而且很容易就漏发。而对于一个企业来说,如果出现这样的问题,很有可能会影响公司的业务进展和团队协作。这个时候我们就需要邮箱群组这个功能&#…

spring cloud介绍

Spring Cloud是一系列框架的集合,它旨在简化构建分布式系统的过程。基于Spring Boot的快速配置和管理,Spring Cloud为微服务架构提供了全面的基础设施支持。它包括但不限于以下组件: 1. **Spring Cloud Discovery** - 服务发现组件&#xff0…

MySQL行级锁——技术深度+1

引言 本文是对MySQL行级锁的学习,MySQL一直停留在会用的阶段,需要弄清楚锁和事务的原理并DEBUG查看。 PS:本文涉及到的表结构均可从https://github.com/WeiXiao-Hyy/blog中获取,欢迎Star! MySQL行级锁 行级锁(Row-…

并发学习28--多线程 Fork、Join线程池

概念 使用 import java.util.concurrent.ForkJoinPool; import java.util.concurrent.RecursiveTask;public class TC51 {public static void main(String[] args) {//递归到最小不可分解单元,再进行计算ForkJoinPool pool new ForkJoinPool(5);pool.invoke(new My…

短视频素材在哪下载?优质视频素材APP下载

在这个视频内容日益成为关键传播手段的时代,选择正确的视频素材可以极大地增强你的内容影响力。无论是制作广告、社交媒体内容还是电影制作,高质量的视频素材都是不可或缺的。以下是精心挑选的全球顶级视频素材网站列表,每个网站都能为你的视…

嵌入式4-18

做一个简单数据库终端操作系统 #include <myhead.h> int main(int argc, const char *argv[]) {int id;char name[16];float score;sqlite3 *pNULL;if(sqlite3_open("./my.db",&p)!SQLITE_OK){printf("sqlite3_open error\n");return -1;} …

QT Webengine开发过程报错qml: Render process exited with code 159 (killed)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、解决方法二、补充说明总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 基于QT的Webengine开发过程中&#xff0c;QT的官方示例…