昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常用代码,发现VLC封装得真好,和ffmpeg简直就是天上地下的区别,所以呢,很快就将VLC的常用功能都加上啦,基本上都是一行代码解决,再次大喊一声:这酸爽~~~ 简直不敢相信!!!

    所以今晚就已经完成了基于VLC的MFC播放器啦,想想当年用那么多时间去折腾ffmpeg,说多了都是泪啊~~~
效果如图:
    
    实现了常用的功能,也就是那一排按钮的功能,由于前面的教程已经给出了VLC的示例,所以本节直接给出了所有的VLC代码,每个函数基本都是一两行,请自行阅读。为了让代码更简洁,很多地方没有加安全验证,所以播放器的使用请按下面步骤进行:
1、拖拽文件到窗口(这时右边的播放列表会自动显示)。
2、双击播放列表即可播放文件(没有过滤文件类型,所以请拖入有效文件)。
3、之后可以随便点击那一排按钮(如快进、快退等等)。
 
    本节教程实现的功能:
1、MFC界面,就是一排按钮加几个控件,没什么好说的啦。
2、VLC封装,就是那一排按钮的功能,都在CAVPlayer里,非常简洁,也没什么好说的啦。
3、进度条的更新,这个需要说一下。本来Alberl想用定时器来更新进度(分成100份),不过发现VLC竟然提供了事件通知,简直人性化到极点啊啊啊~~~  所以Alberl就直接用了VLC的事件通知,基本上是解析一帧(或者一小段?)通知一次,并且暂停时不会通知,所以比定时器好了N倍。可以发现OnPosChanged更新进度时并没有用到VLC的通知事件传过来的参数,这里Alberl只是给出一个示范,让大家知道它的用法,之后更新播放时间等各种状态时可能会用到,所以就先写出来了。
 
    既然VLC的常用功能都实现了,MFC界面也实现了,现在这个版本已经可以说主体功能都OK了,如果不需要美化界面的话,那剩下的工作仅仅是加上参数判断等安全验证,以及细节的一些功能了。
    虽然很快就可以做为一个实用的播放器了,但毕竟现在的软件界面这么美观,不美化一下实在拿不出手,所以我们后面将会美化界面,也就是所谓的仿迅雷看看播放器。
    从动手写代码到完成一个实用的播放器,仅用了两个晚上,真是太出乎意料了,Alberl以为linux下的开源库大部分都像ffmpeg那样,不搞死你不叫开源库呢~O(∩_∩)O~   这次VLC的开发真的让Alberl对linux下发起的开源库刮目相看,记得VLC官网好像说1.1之前没有SDK,现在2.0版本不仅提供了SDK,还提供了编译好的dll和lib,还有完整简洁的Demo,真是越来越向微软看齐,越来越照顾菜鸟了哈,爱死VLC啦~~~
    好啦,其实这个播放器没什么技术含量,如果这样就算完了,Alberl肯定会被骂死的,站在巨人的肩膀上当然很容易搞出各种东东啦。还记得上一个系列的教程最后说什么了吗?
1、看反响。   Alberl第一次写那么详细的教程,当然希望小伙伴们支持啦,现在已经9天了,小伙伴们很给面子,而且csdn斑竹更给面子,即使教程写在博客园,也被推荐到论坛首页啦,非常感谢csdn的斑竹大大~~~
2、反响不错就继续下一个系列的教程,也就是本系列的仿迅雷播放器啦。
    而仿迅雷播放器的重点在什么呢?  从前面的分析可以看出,播放核心早就很完善啦,我们要做的仅仅是换个界面而已,Alberl也可以说“自主研发”了一个播放器哦o(╯□╰)o   埋了这么大的伏笔,就是为了介绍界面,可谓用心良苦啊~~~
    嗯,明天将会开始介绍界面美化,继续关注哦~O(∩_∩)O~
   

仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)的更多相关文章

  1. 仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)

    经过前面的介绍,想必大家对VLC和ffmpeg都有一定印象了,还记得学习ffmpeg多么蛋疼吗?那么VLC会不会也这么蛋疼呢?     那么我们来看一段官方的Demo,Alberl精简了Demo,只留 ...

  2. 仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)

    2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最后说会开源一个播放器,没想到快两年了,才 ...

  3. 用C/C++开发基于VLC SDK的视频播放器

    在windows系统如果开发万能播放器,一般都是基本DirectShow来开发,开发也很简单,但缺点也很多,一个文件格式是否能够播放完全取决于你 是否安装了正确的解析器和解码器,即使现在有了万能解器安 ...

  4. 仿迅雷播放器教程 -- 封装VLC (5)

        虽然上个教程中10多行代码便做出了一个播放器,但如果加上快进快退等功能的话,代码都会挤在一团,阅读性很差,所以这个版本将对VLC进行封装,由于第一个教程已经进行了ffmpeg的封装,所以这里将 ...

  5. (转)薛飞 基于VLC的Unity视频播放器(二)

    转自:http://www.manew.com/thread-144229-1-1.html 留个记录.

  6. 基于VLC的播放器开发

    VLC的C++封装 因为工作需要,研究了一段时间的播放器开发,如果从头开始做,可以学习下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基于FFmpeg开发的,但是这样工作 ...

  7. 基于VLC的视频播放器(转载)

    最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性很大. 找到了一个比较合适的播 ...

  8. 基于VLC的视频播放器

    原文:基于VLC的视频播放器 最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性 ...

  9. 仿迅雷播放器教程 -- C++ 100款开源界面库 (10)

      (声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系 ...

随机推荐

  1. ADODB 手册

        PHP ADODB1.99版手册 (修正版)   PHP ADODB 1.99版手册中文翻译 <修正版> ADODB PHP 在数据库的支持上是很令人称道的,几乎所有的知名数据库系 ...

  2. pt-query-digest简介使用

    简介        pt-query-digest 是用于分析mysql慢查询的一个工具,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善. 有时因为 ...

  3. C#获取类名为Internet_Explorer_Server控件的内容

    为了让大家都能够使用demo,我以IE为测试对象,另外为了突出重点,所以如何获取窗口句柄我就不做演示了(不清楚的童鞋,可以去Google下哈),句柄值我使用spy++获得 大家可以下载demo(附:s ...

  4. android:制作 Nine-Patch 图片

    它是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而 哪些区域不可以. 那么 Nine-Patch 图片到底有什么实际作用呢?我们还是通过一个例子来看一下吧.比如 说项目中有一张气泡样式 ...

  5. centos7 apache设置伪静态 开启rewrite_module

    设置伪静态除了要生成.htaccess文件外,还需要查看服务器是否开启了rewrite_module.经过一番的纠结,处理方法如下: 编辑Apache配置文件 nano /etc/httpd/conf ...

  6. Session.Abandon和Session.Clear的实现和区别

    我在网上找了一个比较贴切的描述: Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面啥都没有.但是Session对象还保留.Session.Abando ...

  7. 【Linux】Cent OS 虚拟机开机自启动配置

    一次断电,导致实体机关机了,虚拟机也连不上去,只好手动来起来. 我想增加一下自启动,让硬件开机的时候,自动启动虚拟机: 其实是有办法的,尝试了一下,也成功了,这里简单标记下. virsh autost ...

  8. 【VSCode】Windows下VSCode便携式c/c++环境

    http://blog.csdn.net/c_duoduo/article/details/52083494 Ver 1.1 完整版(修复mingw环境变量错误)下载: http://pan.baid ...

  9. VS2017不能打开stdio.h等文件

    从另一台机器上复制过来的项目,由于两台机器的库目录不一致,导致了stdio.h等很多文件都打不开: 解决的办法是从新设置包含目录.选择项目-->%项目名称%属性-->VC++目录,设置包含 ...

  10. 〖Linux〗Ubuntu用户重命名、组重命名,机器重命名~

    有时候得到的一台机器名字并不是自己熟悉的,或许是你只是想希望修改一下用户名等等-- 步入正题,其实很简单的,重启机器之后不要进入桌面,按下Ctrl+Alt+F1,使用Root登录,执行以下命令: # ...