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


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

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

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

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

    第三行是字幕内容。

    比如这样:

    18
    00:03:37,933 --> 00:03:45,366
    時而憑風遨遊,時而髙談怪論
    
    19
    00:03:45,366 --> 00:03:45,599
    
    
    20
    00:03:45,600 --> 00:03:49,800
    來往於仙山飄渺之間


    编号为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控件的控制条中会出现一个打开字幕的按钮。如图。

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

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

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

    示例代码下载。

  • 相关阅读:
    Android—应用程序开机自启
    Android—简单的仿QQ聊天界面
    Android—关于自定义对话框的工具类
    Android—基于GifView显示gif动态图片
    Android—ListView条目背景为图片时,条目间距问题解决
    Android—自定义开关按钮实现
    FileProvider的使用
    Android 7.0新特性
    Android SDK自带调试优化工具
    Android监视器概述
  • 原文地址:https://www.cnblogs.com/tcjiaan/p/5356368.html
Copyright © 2020-2023  润新知