虽然上个教程中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. js获取本机id

    var hostname = location.hostname; window.location.href="http://"+hostname+":8080/zhib ...

  2. STL——配接器、常用算法使用

    学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...

  3. Jenkins和maven自动化构建java程序

    转自:http://www.cnblogs.com/gao241/archive/2013/04/08/3008380.html,版权归原作者所有. Jenkins是一个非常出色的持续集成服务器,本文 ...

  4. Android开源项目SlidingMenu学习(二)

    前一篇SlidingMenu学习(一)文章中了解了导入SlidingMenu到我们项目经常出现的问题,下面我们正式学习. 先看一个效果: 看到两幅图片的差别了吗,左边的一栏时可以滑动的,可以隐藏掉,现 ...

  5. Unity3D MonoBehaviour的生命周期(lifecycle)

    官方的事件函数的执行顺序中有详解(Link:Execution Order of Event Functions) (图片来源:http://whatiseeinit.blogspot.com/201 ...

  6. 如何在windows2008/2012上安装启明星系统。

    启明星系统提供多种安装方式.安装包里自带了setup.exe.每个程序的 install下有在线安装(例如请假应用程序为book,则默认为 http://localhost/book/install ...

  7. Using std::map with a custom class key

    From: https://www.walletfox.com/course/mapwithcustomclasskey.php If you have ever tried to use a cus ...

  8. ios mac 对照片进行JPEG压缩

    ios mac 对照片进行JPEG压缩 1. 在iOS上可以使用 API UIImageJPEGRepresentation 对照片数据进行JPEG压缩: 我们知道iOS其实是MAC OS 的移植,那 ...

  9. PL/SQL学习笔记之异常

    一:异常 程序执行过程中出现错误情况被称为异常,主要有两种类型的异常: 系统定义的异常 用户定义的异常 二:系统定义的异常 Exception Oracle Error SQLCODE 描述 ACCE ...

  10. 解决 Firefox 下载文件名乱码扩展 ReDisposition

    作者 muzuiget  发布 2013-03-13 19:23  标签 redisposition Firefox 下载文件名乱码问题由来已久,偶然一两次还可以手动改名,批量下载时简直要亲命,最终我 ...