将VLC库封装为duilib的万能视频播放控件
转载请说明出处,谢谢~~
昨天封装好了基于webkit的浏览器控件,修复了duilib的浏览器功能的不足,而我的仿酷狗播放器项目中不光需要浏览器,同时也需要视频播放功能,也就是完成MV的功能。所以我打算封装个视频播放控件。
既然要封装视频播放控件,那就应该封装一个功能强大,不只是用在这个项目,也为将来可能出现的项目做准备。以前不怎么接触视频播放这块,所以查了很多资料。目前市场上90%的视频播放器都是基于这三个构架:MPC/HC架构
、mplayer架构 、VLC架构 。
关于这三个构架的介绍,国内著名的开源视频播放器射手影音的作者已经在其网站中做了介绍,http://blog.splayer.org/index.php/2010/03/%E5%AA%92%E4%BD%93%E6%92%AD%E6%94%BE%E4%B8%89%E5%A4%A7%E5%BA%95%E5%B1%82%E6%9E%B6%E6%9E%84%E7%AE%80%E6%9E%90/。
射手影音功能强大,软件体积小巧,是国内的开源视频播放器,我很佩服作者的开源精神,尤其是在国内的现状下,我开始打算下载射手影音的源码然后封装他的视频库,可是下载源码后发现工程量太大,需要了解很多视频编码知识,不是一时半会可以做好的,所以放弃了他。
接着找了一些视频播放源码,但是一般都是只针对某一个或者几个格式,感觉不通用,有的还不稳定,所以没有封装。
据统计现在的视频格式多大580种,现在正在用的在200种左右,所以想封装个全能的视频库不太容易。
再查找了一些资料后了解到VLC视频库,同时也找到Alberl的duilib仿迅雷播放器项目,他的项目中正是使用了VLC构架封装了视频控件。VLC构架使用相当简单,封装性做得非常好,另外还有Alberl写好的例子,我也就打算使用VLC构架封装为duilib的视频控件。
封装过程并不难,比封装webkit要简单,不过毕竟是全能的视频库,他的功能还是比较多的,封装起来费时。几个小时候终于封装测试完成,整个过程比较顺利,控件可以正常使用,一个万能的视频播放控件就做好了。
封装的视频控件继承自CControlUI控件,控件在DoInit的函数处做初始化,在内部会建立一个子窗体,这点和上一篇的封装webkit内核是相似的。然后控件内部维护这个子窗体句柄,这个控件的简单之处是不需要我另外封装个窗体类,所用功能都在同一个类里面实现了。只要有了子窗体句柄,就可以让VLC库附着到窗体上了,剩下的就是处理各种信息和函数,此处略过~~
最后说一下VLC的缺点,我发现的唯一缺点就是:太大。整个库加起来60M还多一点,不过他的优点也很明显解码高效,使用简单的。
将VLC库封装为duilib的万能视频播放控件的更多相关文章
- 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度 ...
- 使用 WebView2 封装一个生成 PDF 的 WPF 控件
使用 WebView2 封装一个生成 PDF 的 WPF 控件 最近在迁移项目到 .net6,发现项目中用的 PDF 库不支持 .net6,于是想着换一个库.结果找了一大圈,发现不是版本不支持,就是收 ...
- duilib进阶教程 -- Container控件的bug (14)
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...
- 示例:WPF中Slider控件封装的缓冲播放进度条控件
原文:示例:WPF中Slider控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
- duilib+cef自定义浏览器控件编译错误
新版博客已经搭建好了,有问题请访问 htt://www.crazydebug.com 公司二期好主播项目,决定用duilib开发界面,且从ie内核换成谷歌内核 再用duilib自定义一个Browser ...
- duilib 的IE浏览器控件去边框和去滚动条的代码
近些天在duilib群里经常有朋友问起,怎么让duilib的IE控件可以去边框,去滚动条的问题,或者是如何去控件IE控件的行为.为了避免重复的回答,我就写一篇博文,把处理方法说明一下. duilib中 ...
- duilib relativepos属性导致控件错误的bug修复
转载请说明出处,谢谢~~ 我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/381 ...
- duilib 的IE浏览器控件去边框和去滚动栏的代码
转载请说明原出处,谢谢~~ 近些天在duilib群里常常有朋友问起,怎么让duilib的IE控件能够去边框.去滚动栏的问题,或者是怎样去控件IE控件的行为.为了避免反复的回答,我就写一篇博文,把处理方 ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
随机推荐
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...
- 用JUnit4进行单元测试
转载:http://tonl.iteye.com/blog/1948869 参考: http://thihy.iteye.com/blog/1771826 http://developer.51cto ...
- JavaWeb项目开发案例精粹-第2章投票系统-001设计
1.项目结构 2.数据库设计 # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET ...
- 测试Tomcat
- 不用Invoke就等用 Control.CheckForIllegalCrossThreadCalls = false;
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- HDU 4351 Digital root 线段树区间合并
依然不是十分理解……待考虑…… #include <cstdio> #include <cstring> #include <cstdlib> #include & ...
- 使用 powershell 的 grep 过滤文本
使用 powershell 的 grep 过滤文本 有个log文件,大小在4M左右,要求找出里面耗时超过100s 的记录.首先想到了强大的 grep ,那么就搞起. 先在网上找一下资料,这篇文章,有几 ...
- NDK(13)JNIEnv和JavaVM
转自: http://www.cnblogs.com/canphp/archive/2012/11/13/2768937.html JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立 ...
- [UVA315]Network(tarjan, 求割点)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 各浏览器各版本User-agent汇总 欢迎补充
Internet Explorer Internet Explorer 5 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; WOW64; Trident/ ...