虽然上个教程中10多行代码便做出了一个播放器,但如果加上快进快退等功能的话,代码都会挤在一团,阅读性很差,所以这个版本将对VLC进行封装,由于第一个教程已经进行了ffmpeg的封装,所以这里将利用它的框架CAVPlayer,由于这些封装代码都很简洁明了,所以将不再对细节一一介绍,直接给出封装好的代码。
#include <string>
#include "AVPlayer.h" int main(int argc, char* argv[])
{
std::string strCMD;
CAVPlayer cAVPlayer; cAVPlayer.Play("G:\\media test\\music\\amani.wma"); while(true)
{
std::cin >> strCMD; if (! strCMD.compare("Quit"))
{
break;
}
} return ;
}

运行之后,输入Quit即可退出。这里有效代码仅仅一行,是不是比上一个教程又简洁很多呢~O(∩_∩)O~

    其中CAVPlayer的部分封装如下:
class CAVPlayer
{
public:
CAVPlayer(void);
~CAVPlayer(void); void Init(); // 初始化
void Close(); // 关闭文件及清理 bool Play(const std::string &strPath); // 播放路径为strPath的文件
void PlayNext(); // 播放下一个文件
void PlayPre(); // 播放上一个文件 void Stop (); // 停止
void Pause(); // 暂停 void Volume(int nVol); // 音量设置为nVol
void VolumeIncrease(); // 音量增大
void VolumeReduce(); // 音量减小 void SeekTo(int nPos); // 跳到指定位置nPos
void SeekForward(); // 快进
void SeekBackward(); // 快退
......
}

CAVPlayer目前只实现了Play函数,其他函数将会在后面的教程一次性实现,届时不再一一列出,这里给出一个框架,加快大家对VLC的认识。

 
(代码在win7系统的VC6、VS2008、VS2010、VS2012下均编译通过;在XP系统的VS2008、VS2010下均编译通过;在gcc下应该也能编译通过,不过没有用gcc测试。
由于第一个教程给出的是VS2010的代码,有些小伙伴没安装这个编译器,导致很多问题,所以这个教程给出的代码是VC6的,可以升级到任何编译器)
 
 
(由于界面等工作还没开始,所以下一个教程可能会隔得久一点,Alberl会尽快直播~)

仿迅雷播放器教程 -- 封装VLC (5)的更多相关文章

  1. 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)

        代码下载:http://download.csdn.net/detail/qq316293804/6409417   昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常 ...

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

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

  3. 仿迅雷播放器教程 -- 提取exe资源(12)

    既然选择了一个界面库,那么咱们就开始吧!     既然是仿迅雷播放器,那当然要把迅雷播放器的资源提取出来啦,但是很多小伙伴可能不知道怎么提取,所以这里就教大家一些方法: 一.传统的资源提取器     ...

  4. 仿迅雷播放器教程 -- duilib界面(13)

    经过了这么多篇文章的讲解,相信大家也对界面库有一定了解了,用一个新的界面库,肯定要对它进行全方位考察.鉴于公司目前所有的产品都是MFC做的,全部转换成duilib肯定不现实,并且公司的很多项目逻辑和界 ...

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

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

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

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

  7. 仿迅雷播放器教程 -- C++ windows界面库对比(11)

    从上一篇文章中可以看出,C++的界面方向还很弱,没有任何一个界面库可以一统天下,所以才造成了界面库百家争鸣的情况. 从时间上看: 1.出来最早的是QT,1991年就有了. 2.VC++ 虽然1992年 ...

  8. 仿迅雷播放器教程 -- 十年经验大牛对MFC的认识 (7)

    由于上一个教程做界面用的是MFC,所以这里不得不说一下MFC的历史,请看正文:   原文链接:http://blog.csdn.net/sunhui/article/details/319551 作者 ...

  9. 仿迅雷播放器教程 -- C++界面制作方法的对比 (9)

        上一个教程对比的5个方向共7个界面框架,都是非常权威,应用很广泛的库,绝对是非常稳定,并且能够做出常见的界面出来,可以放心大胆的用在项目里.     但那7个界面框架再好,也总是没有绝对的优势 ...

随机推荐

  1. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...

  2. pho文件操作

    php文件操作函数 readfile - 适用于打开一个文件并读取文件的内容 echo readfile('e:/webdictionary.txt'); fopen('文件名','打开模式') - ...

  3. WPF(C#)与MATLAB混合编程

    WPF(C#)与MATLAB混合编程 WPF可以为开发者提供便捷地构建用户交互界面的解决方法,而matlab则在科学计算方面有着无与伦比的优势,因此在一些需要将科学算法转换为应用软件的项目中,需要应用 ...

  4. win2008R2管理员密码修改文档

    场景:忘记了win2008R2服务器的管理员密码.解决办法:1. 制作一个U盘启动盘:2. 系统通过U盘启动进入WINpe系统3. 在知道Win2008安装位置的情况下:查找C:\windows\sy ...

  5. 一道面试题 包含了new的细节 和运算符的优先级 还有属性访问机制

    function Foo() { getName = function () { alert(1); } return this; } Foo.getName = function () { aler ...

  6. Android-ContentProvider使用

    Android-ContentProvider使用 一 建立ContentProviderserver端 1 建立一个继承自ContentProvider的类并重写接口方法(这里仅打一些log做代表) ...

  7. java实现八种排序算法并测试速度

    速度测试: (1) 随机数范围:0-100希尔排序: => Time is 38600基数排序: => Time is 53300快速排序: => Time is 46500堆  排 ...

  8. 最近IOS10.2.1 iphone6 无法通过appStore 来更新 下载任何APP。好烦啊。

    今天打开爱思助手,查看事实日志,发现了原因: Mar :: iPhone6 appstored(StoreServices)[] <Notice>: SSSQLiteDatabase: C ...

  9. SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍

    一.前言 转置操作在很多算法上都有着广泛的应用,在数学上矩阵转置更有着特殊的意义.而在图像处理上,如果说图像数据本身的转置,除了显示外,本身并无特殊含义,但是在某些情况下,确能有效的提高算法效率,比如 ...

  10. SVN的Branch和Tag管理

    dev:开发主线 branch: 部分特殊客户的定制化版本 tag: 主线的某个发布版本 release: 主线的里程碑式的发布版本(相比上一里程碑版本,改动非常大,并且当前已经很稳定的) 你可以在b ...