[C#]为微软ASP.NET官方教学视频增加字幕

前言

Microsoft Virtual Academy提供了学习ASP.NET的大量视频材料。(注1)

由于视频服务器位于海外,国内浏览速度并不理想,幸好官方提供了视频的下载地址以及英文字幕文件。

然而其提供下载的字幕文件仅为不带时间戳的文本文档,而页面上提供的带时间戳的字幕文件并非标准格式字幕文件,因此用C#制作了一个简单字幕制作程序。

需求

1.在提供的文本中提取字幕开始与结束时间戳。由于官方字幕文档只有开始时间,需要截取下一条字幕开始时间作为结束时间并进行微调;

2.将提取的时间戳扩展为srt标准时间戳格式。官方字幕的时间格式并不符合srt字幕需求的格式;

3.输出标准格式的srt字幕文件。

输出结果如下,依次为原始的字幕文档、准确的srt文件、字幕添加到视频中的效果(注2)

00:00:04	We are back.
00:00:04	And we are almost to the MVC partof ASP.NET Core introduction,
00:00:09	not quite, but almost.
00:00:11	What we‘re gonna do here is we‘regonna give you a little bit...

  

1
00:00:03.00 --> 00:00:04.50
We are back.
2
00:00:04.55 --> 00:00:09.50
And we are almost to the MVC partof ASP.NET Core introduction,
3
00:00:09.55 --> 00:00:11.50
not quite, but almost.
4
00:00:11.55 --> 00:00:13.50
What we‘re gonna do here is we‘regonna give you a little bit...

  

  

  

实现

using System.IO;

namespace TxtToSrtForVideoOnASP.NET
{
    class Program
    {
        static void Main(string[] args)
        {
            //读取与输出文件
            string path = @"D:\transcript.txt";
            string subPath = @"D:\sub.srt";

            using (StreamWriter sw=new StreamWriter(subPath))
            {
                string[] allLine = File.ReadAllLines(path);
                string startTime="";
                string endTime = "";
                for (int i = 0; i < allLine.Count(); i++)
                {
                    //读取每行前8个字符作为每条字幕开始时间
                    startTime = AdjustTime(allLine[i].Substring(0, 8), true);

                    //读取下一行前8个字符作为每条字幕结束时间
                    if (i == (allLine.Count()-1))
                        //视频结束时间
                        endTime = "00:19:24,00";
                    else
                        endTime= AdjustTime(allLine[i+1].Substring(0, 8), false);

                    //输出标准srt格式字幕
                    sw.WriteLine((i + 1) + "\r\n" + startTime + " --> " + endTime + "\r\n" + allLine[i].Substring(9));
                }
            }
            Console.WriteLine("输出完毕");
            Console.ReadKey();
        }

        /// <summary>
        /// 为srt文件提供完整的时间戳格式,加入少量延迟使字幕时间更准确
        /// </summary>
        /// <param name="Time">从transcript.txt中读取的时间戳</param>
        /// <param name="start">Time是否为开始时间</param>
        /// <returns></returns>
        public static string AdjustTime(string Time,bool start)
        {
            if (start)
                return (TimeSpan.Parse(Time) + TimeSpan.FromSeconds(0.55)).ToString().Substring(0,11);
            else
                return (TimeSpan.Parse(Time) + TimeSpan.FromSeconds(0.5)).ToString().Substring(0,11);
        }
    }
}

注:

1.https://mva.microsoft.com/en-US/training-courses/introduction-to-asp-net-core-1-0-16841?l=yiobVeE6C_3506218965

2.第一条字幕由于时间较短以及官方时间戳的不完整与第二字幕开始时间一致,需要经过手动微调。可以增加逻辑进行处理,然而只有一条字幕所以在本例没有实现。

时间: 2024-10-12 11:23:22

[C#]为微软ASP.NET官方教学视频增加字幕的相关文章

微软ASP.NET 电商网站开发实战 MVC6 +HTML5 +WCF+WebAPI+NoSQL+mongoDB+Redis+Core视频 代码 面试题

<微软ASP.NET 电商网站开发实战 MVC6 +HTML5 +WCF+WebAPI+NoSQL+mongoDB+Redis+Core 视频 代码 面试题 >下载网盘:https://yunpan.cn/cP7SNIjgJYYjA  访问密码 7fc6 微软特邀讲师 徐雷FrankXuLei 2016 授课 更新:.NET Core 1.0高并发框架+面试题更新:高性能缓存 Redis.NoSQL面试题 安装,增删改查 RedisHelper帮助类 购物车 会话服务器更新:REST WebA

微软C#6.0语言OOP面向对象编程》《微软ASP.NET\MVC56网站开发》《微软Web服务\WCF\Web API3.0课程视频》

最新<微软C#6.0语言OOP面向对象编程><微软ASP.NET\MVC56网站开发><微软Web服务\WCF\Web API3.0课程视频>下载 下载链接:http://pan.baidu.com/s/1bnjJQnd 密码:36ji 微软与开源实战训练营QQ群:  203822816微软MSDN俱乐部QQ群:  29754721,

《疯狂Workflow讲义(Activiti6.x)》教学视频

大家好,工作流引擎Activiti6的教学视频目前正在录制中,大部分视频会免费提供,大家可以关注我的公众号获取,更新进度请留意公众号信息. 视频目录: 01 Activiti介绍与搭建开发环境 02 运行官方例子 03 编写第一个Activiti程序 04 流程引擎配置与服务组件 05 Activiti数据库介绍 06 API(1)Activiti数据查询 07 API(2)流程文件部署 08 API(3)流程定义 09 API(4)任务操作 10 API(5)任务参数与附件 11 API(6)

微软 ASP.NET vNext MVC6 Web API3 新特性

今天讲课系统NET vNext 新特性ASP.NET vNext新特性, MVC6, Web API 3.0新特性,Roslyn编译器 ..NET Native.nGEN.JIT64和RyuJIt新特性.Visual Studio 2014新特性,并且做了Demo 你知道下一代.NET新变化,还有他们之间的关系吗?@微软中国MSDN @微软中国TechNet @微软中国 微软实战训练营 ! 国内最新的课程!贴近中外名企一线开发! http://54peixun.com/MSTrainingCam

微软ASP.NET技术“乱谈”

微软ASP.NET技术“乱谈” 2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧. 1 当前微软Web平台技术全貌 从2002年发布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013发布时,微软.NET平台己有11年的历史,其Web技术几经变迁,当前演化为以下的主要技术子领域: 一张图了解微软Web平台技术全貌 时至今日, ASP.NET底层的基础架构基本没太大变化

Android 教学视频的 使用思想,注意点

之前讲过 找Android工作, 以及Android兴趣 到放弃工作.  还有讲到Android 项目源码 的使用思想,注意点, 这次讲下 Android 教学视频的 使用思想,注意点. 送上小清新 妹子图 一张, 免得 程序员的文章都太枯燥. 那么接下来就是正文, 这个是 极客学院的一些Android 教学视频,  那怎么使用思想是什么的, 要都看吗?  肯定不必啦. 其实跟Android 应用源码差不多. 假如你想做个类似神经猫的游戏,就可以参考一下这个教学视频.  不需要的话, 真的没有必

美国数学教父拒绝10亿美元 免费分享教学视频

美国39岁“数学教父” 拒绝10亿美元 免费分享教学视频 美国39岁的“数学教父”萨尔曼·汗放弃了1万亿美元的商业机会,拒绝风投机构的10亿美元投资,他唯一坚持的就是免费分享教学视频.他讲解数学通俗易懂,颠覆了美国教育,全美国有2万多所学校不需要数学老师讲课,只要看他的视频就行了. 帮侄女辅导无意中成为“数学教父” 萨尔曼是来自孟加拉国的移民,从小家里很穷,但他在数学方面颇有天赋,考上了美国麻省理工学院,四年读完了数学和计算机科学两个专业的课程. 萨尔曼有个小侄女叫纳迪亚,2004年时上七年级,

本人讲课时录制的Android应用开发技术教学视频

网盘地址:http://yun.baidu.com/pcloud/album/info?query_uk=1963923831&album_id=3523786484935252365 本人讲课时录制的视频,采用webex录制,视频文件内容相对较小30-50兆左右,1个视频文件平均大概有1个小时左右的时间,每个例子基本上从建立项目开始边做边讲. 由于讲课范围是Android应用开发技术,视频没涉及搭建环境,基础控件的使用等基础内容. 主要内容包括: 后台服务. 服务的绑定.服务和线程.远程服务和

大量JAVA系列教学视频免费学习

java从入门到精通教学视频,共41讲: java推箱子游戏教学视频(4讲): java仿QQ即时通讯软件教学视频(9讲): C语言从入门到精通教学视频(11讲): C语言贪吃蛇教学视频(13讲) JSP从入门到精通教学视频(28讲): javascript从入门到精通教学视频(7讲): Struts1.x教学视频(3讲): Struts2.x教学视频(4讲): Ajax教学视频(5讲): SQL 2000基础数据库教学视频(7讲): SQL 2005高级数据库教学视频(10讲): Hibern