据说系统内置的多媒体功能支持 srt、 ssa 等字幕,老周测试过几种格式的字幕均能加载。

SRT 字幕是最简单的字幕结构,甚至你用记事本都能做出来,就是分为几行来写。

第一行是字幕的编号,应该是从1开始的,反正工具生成的SRT都是从1开始编号;

第二行是字幕的开始时间和结束时间,中间用一个 “-->”来分隔;

第三行是字幕内容。

比如这样:

::, --> ::,
時而憑風遨遊,時而髙談怪論 ::, --> ::, ::, --> ::,
來往於仙山飄渺之間

编号为19的字幕是空白,所以第三行没有内容。

好,下面就说说加载外部SRT字幕的方法。

第一步:创建MediaSource,然后把这个MediaSource实例与MediaElement控件关联,这样就可以在界面上播放。

            FileOpenPicker picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".mkv");
picker.FileTypeFilter.Add(".mp4"); StorageFile file = await picker.PickSingleFileAsync(); if (file != null)
{
MediaSource ms = MediaSource.CreateFromStorageFile(file);
me.Tag = ms;
me.SetPlaybackSource(ms);
}

第二步,加载字幕文件,然后创建TimedTextSource对象,再把它加入到MediaSource.ExternalTimedTextSources属性中,这个属性是一个列表,类型为TimedTextSource。每加入一个TimedTextSource对象就多一个字幕轨道。

            MediaSource mdsrc = me.Tag as MediaSource;

            FileOpenPicker picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".srt");
StorageFile srtfile = await picker.PickSingleFileAsync(); if (srtfile != null)
{
IRandomAccessStream stream = await srtfile.OpenReadAsync();
TimedTextSource txtsrc = TimedTextSource.CreateFromStream(stream);
mdsrc.ExternalTimedTextSources.Clear();
mdsrc.ExternalTimedTextSources.Add(txtsrc);
}

这样就完成了。如果视频文件有内置字幕,方法也一样,只是在创建TimedTextSource对象时指定的是视频文件本身,如果是外部字幕,就指定字幕文件。

运行应用程序,先打开视频播放,然后选择字幕文件。当添加了有效的字幕文件后,MediaElement控件的控制条中会出现一个打开字幕的按钮。如图。

然后,点击这个按钮就可以选择加载的字幕,或者关闭字幕。

最后,在视频中就能显示字幕了。

好了,老周近两天严重感冒了,现在稍为好转,就顺便写一写博文。

示例代码下载。

【Win 10 应用开发】加载外部的 srt 字幕的更多相关文章

  1. Skyline TerraExplorer -二次开发- 加载外部数据的各种连接串

    Skyline 可以连接外部的数据源,包括SQL Server,Oracle ,excel,mySQL,SQlite,WFS....... 连接字符串如下:例如连接shp文件,为“FileName=C ...

  2. 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

    [源码下载] 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件 作者 ...

  3. 【Java Web开发学习】Spring加载外部properties配置文件

    [Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...

  4. Android 插件化开发(二):加载外部Dex文件

    在学习Java反射的技术后,我们可以开始更深一步的探究插件化开发了.首先先讲一下Android App的打包流程,然后我们通过一个简单的例子 —— 实现插件化加载外部Dex来完成初级的插件化开发的探索 ...

  5. 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

    CustomResource ResourceDictionary 加载外部的 ResourceDictionary 文件 示例1.演示“CustomResource”相关知识点Resource/Cu ...

  6. JavaScript学习总结(十九)——使用js加载器动态加载外部Javascript文件

    今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 M ...

  7. Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】

    接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就 ...

  8. Spark动态加载外部资源文件

    Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...

  9. JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

    http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...

随机推荐

  1. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  2. SSH实战 · 唯唯乐购项目(下)

    后台模块 一:后台用户模块 引入后台管理页面 创建adminuser表: CREATE TABLE `adminuser` (   `uid` int(11) NOT NULL AUTO_INCREM ...

  3. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  4. Mysql事务探索及其在Django中的实践(一)

    前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)

    系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...

  6. jQuery之Deferred源码剖析

    一.前言 大约在夏季,我们谈过ES6的Promise(详见here),其实在ES6前jQuery早就有了Promise,也就是我们所知道的Deferred对象,宗旨当然也和ES6的Promise一样, ...

  7. 使用SecureCRT连接虚拟机(ubuntu)配置记录

    这种配置方法,可以非常方便的操作虚拟机里的Linux系统,且让VMware在后台运行,因为有时候我直接在虚拟机里操作会稍微卡顿,或者切换速度不理想,使用该方法亲测本机效果确实ok,特此记录. Secu ...

  8. node中的Stream-Readable和Writeable解读

    在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.Outpu ...

  9. 用django创建一个项目

    首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左 ...

  10. maven 快照

    大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景.例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发, ...