将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还多一点,不过他的优点也很明显解码高效,使用简单的。

 

2014.7.26  14:37  Redrain

时间: 2024-08-29 07:52:53

将VLC库封装为duilib的万能视频播放控件的相关文章

基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址

转载请说明原出处,谢谢~~        前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度,我只是按照原来作者的demo,把相应的消息封装成duilib对应的.        在此首先要感谢wke内核的作者BlzFans以及soui2界面库的作者flyhigh,BlzFans精简了webkit内核后封装为wke并公布了源码,flyhigh对wke进行处理让他更容易移植到du

duilib界面库给container添加滚动条后子控件不能正常显示的问题

问题描述 duilib界面库给container添加滚动条后子控件不能正常显示的问题 container子控件需要任意在容器中任意拖拽,就使用了绝对布局,现在要给这个container添加垂直滚动条随子控件位置的改变而改变,现在虽然拖拽和滚动条都实现了,但是当双击向下拖动子控件到一定程度(拖动时顶部有一部分未显示)滚动条以后也不会显示这部分内容了. 解决方案 主要修改的代码如下: void CContainerUI::SetPos(RECT rc) { if( m_pVerticalScroll

duilib mfc中ocx控件-duilib如何调用mfc控件ocx中的方法,急!!!

问题描述 duilib如何调用mfc控件ocx中的方法,急!!! duilib如何调用mfc控件ocx中的方法啊?求大神赐教啊!!!谢谢了!!! 解决方案 这个我已经有思路了,但还是不知道怎么在duilib中加载,如何获取组件的iid?

消息-duilib怎么去除lable控件双击出现bug

问题描述 duilib怎么去除lable控件双击出现bug 求大神们帮忙:当我双击lable控件时,出现了一个bug,该怎么解决啊,要关闭它的双击消息吗?

duilib 的IE浏览器控件去边框和去滚动条的代码

转载请说明原出处,谢谢~~         近些天在duilib群里经常有朋友问起,怎么让duilib的IE控件可以去边框,去滚动条的问题,或者是如何去控件IE控件的行为.为了避免重复的回答,我就写一篇博文,把处理方法说明一下.         duilib中有Webbrowser控件,是继承ActivexUI控件后针对IE进行的封装,使用IE控件的话就用他了.这个控件留了一个接口名为SetWebBrowserEventHandler,这个函数用了指定一个事件处理器,来控制IE的行为.而这个函数

封装好的省市地区联动控件附下载_javascript技巧

所有的地址数据都放在js文件里面,调用该控件的方法很简单: <script type="text/javascript">  var area = new AreaCtrl("省份:","城市:","地区:");  area.write(); </script> AreaCtrl 类最多有3个参数,如上例的"省份","城市","地区",这里的文

将webkit内核封装为duilib的浏览器控件

转载请说明出处,谢谢~~          原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直没有解决的,编程群里的朋友也反映IE控件不好用.而目前最常用的浏览器内核一个是IE内核,另一个是webkit内核.             先简单介绍一下这个webkit内核            WebKit 是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozilla

duilib 增加gif控件(基于gdi+,可控制播放暂停,自动设置大小)

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42502081         因为项目需要我需要给duilib增加一个gif控件,目前已经有了gif控件有很多版本,我去搜集了一些控件,但是都没有自己满意的.原uilib库中已经有GifAnim控件,但是这个控件给出的控制功能不足,不可以控制播放.暂停.停止.当控件隐藏时也不会停止播放动画,会影响效率.         于是在原GifAnim的基础上做了增强,增加了Pl

封装-ie32位浏览器 和 ie4位浏览器可以同时调用同一个ocxdll控件吗?

问题描述 ie32位浏览器 和 ie4位浏览器可以同时调用同一个ocxdll控件吗? 最近做项目遇到一个问题,如果封装的是32位的ocx控件只能被32位ie调用,封装的是64位的控件只能被64位浏览器调用, 64位和32位浏览器必须调用不同的ocx控件,这让用户如何使用呢?? 我使用的是vc2010 编译的,是否我编译的ocx有问题啊 解决方案 根据useragent可以判断客户端用的是什么版本的ie,然后提供各自的控件. 解决方案二: 也就是说,要为ie32 和 ie64提供2套空件了? 是否