看弹幕视频的时候,如果不发弹幕,一个本地的弹幕播放器往往能带来更好的体验。目前已经有一些实现了,最初用过一个MukioPlayer, 后来又用过一个用C++写的BiliLocal,这个程序能自动下载弹幕,播放格式也非常宽泛,功能和性能基本上都没有什么值得挑剔的地方,感觉主要的一个Bug就是进度跳转的时候弹幕要消失一阵子(包括显示/隐藏弹幕的时候)。

前段时间为学习WPF的动画的时候顺便做了一个本地的弹幕播放器练手,后来发现效果还不错,便将其完善了下,现在已经能基本可用了。虽然BiliLocal已经非常给力了,但自己写的控制力度更大,没有BiliLocal的进度跳转时字幕消失的Bug,弹幕滚动算法上也加了一些小调整,看起来更加舒服点,一些想要的功能也可以自己加上去。这个程序虽然是WPF写的,但并没有用什么平台相关的功能,感觉移植到Windows Phone或Win8的Metro界面下应该是比较容易的。

感兴趣的朋友可以下载试用一下:点击下载。(需要.Net 4.5框架)

基本操作:

打开本地视频和弹幕:

  • 点击打开按钮可以打开本地视频文件和弹幕文件,可以同时选择视频文件和弹幕,也可以分别选择。
  • 直接将文件拖到主窗口

视频文件支持和系统相关,我只试了一些h264格式的mp4,mkv等格式的支持需要安装K Lite CodecPack或其它解码器。字幕文件目前只支持bilibili的xml格式的。

打开在线弹幕

  • 目前只支持解析bilibili的在线弹幕,直接点击打开弹幕按钮,输入其Url即可。
  • 直接在浏览器中将视频URL拖入到主窗口中。

播放控制

  • 播放按钮:开始、停止、暂停操作 (双击主界面可显示/隐藏控制面板)
  • 进度条:跳转进度
  • 快捷键:←:后退30s,→:前进30s, 空格:暂停/继续

其它控制操作

  • 声音调整
  • 显示/隐藏字幕

后续待添加的功能:

  1. 支持调整弹幕透明度
  2. 支持调整播放速率
  3. 收藏夹
  4. 区间重复播放
  5. 支持主题
  6. 一些个性化配置(如自定义快捷键,弹幕参数等)
  7. 能够支持外挂字幕和mkv的内置字幕

这些功能实现基本上都不难,但是如果要做相应的界面就非常费时间了,等有精力的时候再慢慢弄。另外,程序中不免有些Bug,欢迎留言指出。

补充: 新版本的弹幕播放器已经发布,对弹幕增加了描边,阴影,透明度,字体,字号设置的支持,性能方面也有了较大优化,看起来要舒服得多,欢迎使用。

用WPF写了一个弹幕播放器的更多相关文章

  1. 师兄写的一个JAVA播放器的源代码(转)

    师兄写的一个JAVA播放器的源代码 MediaPlayer.java------------------------------------------------------------------ ...

  2. 大半宿,封装了一个MP3播放器的类,写了个简陋的播放器

    用 winmm.lib 写的 封装不是很好,而且没有优化,效率可能有问题,但是现在几乎没有什么大问题 我用我封装的类,写了一个小播放器,界面上的所有功能都实现了,包括双击列表中的文件名,直接播放文件 ...

  3. 将WPF版的弹幕播放器给优化了一下

    年前较闲的时候研究了一下WPF的性能优化,练手的时将之前写的弹幕播放器给重新写了一下.年前的时间不大够,没有写完,这两天接着弄了一下,基本上弄得差不多了. 主要重写了底层的渲染算法,优化后效果还是非常 ...

  4. 一个可扩展的弹幕播放器的HTML5实现范例---ABPlayerHTML5

    ABPlayerHTML5 是一个简单易懂的现代弹幕魔法播放器.这个项目意在取代基于 Flash 的 ABPlayer,同时也希望能为新一代的HTML5弹幕播放器打造一个实现范例.这个播放器將用相对通 ...

  5. 用 EPWA 写一个 图片播放器 PicturePlayer

    用 EPWA 写一个 图片播放器  PicturePlayer  . 有关 EPWA,见 <我发起并创立了一个 EPWA 的 开源项目>   https://www.cnblogs.com ...

  6. Flutter · Python AI 弹幕播放器来袭

    AI智能弹幕(也称蒙版弹幕):弹幕浮在视频的上方却永远不会挡住人物.起源于哔哩哔哩的web端黑科技,而后分别实现在IOS和Android的app端,如今被用于短视频.直播等媒体行业,用户体验提升显著. ...

  7. ios开发:一个音乐播放器的设计与实现

    github地址:https://github.com/wzpziyi1/MusicPlauer 这个Demo,关于歌曲播放的主要功能都实现了的.下一曲.上一曲,暂停,根据歌曲的播放进度动态滚动歌词, ...

  8. 吴裕雄--天生自然python学习笔记:python 用pygame模块制作一个音效播放器

    用 Sound 对象制作一个音效播放器. 应用程序总览 程序在执行后默认会把 WAV 音频文件加载到清单中,单击“播放”按钮可开始 播放,同时显示 “正在播放 xxx 音效”的信息 . 播放过程中,可 ...

  9. 从零开始学习PYTHON3讲义(十四)写一个mp3播放器

    <从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...

随机推荐

  1. monkey测试===如何获取android app的Activity

    方法一(推荐): 手机连接adb,手机界面在需要取得activity的界面. 推荐使用该命令: adb shell dumpsys activity top | findstr ACTIVITY 获取 ...

  2. ogre3d环境配置 SDK安装配置及简单事例教程

    ogre3d环境配置 SDK安装配置及简单事例教程 http://www.cr173.com/html/22594_1.html ogre3d环境配置 SDK安装配置及简单事例教程 http://ww ...

  3. python爬虫模块之HTML下载模块

    HTML下载模块 该模块主要是根据提供的url进行下载对应url的网页内容.使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象. 根 ...

  4. javascript 线程问题小记

    大家都知道javascript是单线程执行的,alert之后,就无法执行以下的函数,浏览器是按照从上到下的顺序来安排解析显示的. 其实虽然javascript是单线程的,但是浏览器是多线程的,典型的浏 ...

  5. MyBatis3-与Spring 4集成

    继续使用前一篇的例子http://www.cnblogs.com/EasonJim/p/7052368.html,实际项目中,通常会用Spring来管理DataSource等.充分利用Spring基于 ...

  6. Linux下几种并发服务器的实现模式

    Linux下的几种并发服务器的设计模式 1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. ...

  7. 一个大div里面包裹一个小div,里面的小div的点击事件不触发外面的这个大div的点击事件

    一开始上html代码 <div id="div1" style="background: blue;width: 100px; height: 100px;&quo ...

  8. MVC - 13.验证

    1.注解验证-Required-StringLength-Range-Regular. 1.1.验证方式 [Required], [StringLength], [Range], 和 [Regular ...

  9. maven项目的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0 " 2 xmlns:xsi="http://www.w3.org ...

  10. AC日记——严酷的训练 洛谷 P2430

    严酷的训练 思路: 背包: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 5005 int n,m,bi[m ...