基于VLC的播放器开发

简介:

VLC的C++封装  

  因为工作需要,研究了一段时间的播放器开发,如果从头开始做,可以学习下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基于FFmpeg开发的,但是这样工作量和难度都比较大,如果想很快能拿出一个播放器来用的,可以研究下开源的播放器,参考下射手播放器作者的文章:媒体播放器三大底层架构

  对比下现有的主流播放器:媒体播放器列表,VLC是在各个方面都表现很突出的一款。VLC 是一款免费、自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,DVD、音频 CD、VCD 以及各类流媒体协议。VLC官网:http://www.videolan.org/

  VLC是在Linux下用C语言开发的,如果想用其接口,可以将C的接口用C++封装一下,这样使用方便的很多,在CodeProject上搜到一个C++的封装,在他的基础上加了点函数,使用了最新的VLC版本(2.1.0),用MFC做成了如下的样子:

  主要实现功能:

  1、打开:加载音视频文件(同时开始播放)。

  2、播放/暂停:播放暂停文件播放。

  3、停止:停止播放。

  4、快进:快进5秒。

  5、快退:后退5秒。

  6、音量:音量调节(0--100)。

  7、播放进度控制:使用进度条控制。

  基本上实现的功能和CodeProject上那个demo差不多,我修改后可以播放网络流媒体,将加载的文件名修改为流媒体地址就可以了。播放上面双语字幕的文件时貌似不能正常显示中文,VLC播放器本身也有这个问题,不过可以设置修改。其他更多的功能还有待研究,VLC的接口注释都很详细,按照它的接口应该可以实现更多的功能,有问题也可以直接在VideoLan的论坛上发帖问:https://forum.videolan.org/

  主要问题:运行时需要依赖的VLC的plugins目录里的DLL(66M大小)太多,有一些DLL是用不到的,如果封装成ActiveX给Web下调用,打包的cab的会比较大,需要裁剪。。。

  主要参考文章:

  1、http://www.codeproject.com/Articles/38952/VLCWrapper-A-Little-C-wrapper-Around-libvlc

  2、http://www.cnblogs.com/Alberl/archive/2013/11/04.html

 

VLC的C#封装

  如果播放器客户端使用的是.Net开发的,如何使用VLC?可以有以下几种方法:

  1、ActiveX控件:可以将上述MFC的播放器封装成ActiveX控件提供给C#调用。鉴于业余时间有限,现在这部分工作还没做。

  2、使用.Net的PInvoke技术将VLC的C接口封装成C#接口,这方面网上的文章也很多,具体可参考以下文章:

  libvlc media player in C# (part 1)
http://www.helyar.net/2009/libvlc-media-player-in-c/

  libvlc media player in C# (part 2)
http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/

  VideoLan DotNet for WinForm, WPF & Silverlight 5
https://vlcdotnet.codeplex.com/

  nVLC
http://www.codeproject.com/Articles/109639/nVLC

  c#万能视频播放器
http://www.cnblogs.com/haibindev/archive/2011/12/21/2296173.html

  这里还有一个Android下的VLC播放器开发:

  http://www.cnblogs.com/mythou/p/3235698.html

 

源码下载

  基于VLC的MFC播放器下载:http://download.csdn.net/detail/luxiaoxun/6671339

 

 


    本文转自阿凡卢博客园博客,原文链接:http://www.cnblogs.com/luxiaoxun/p/3462153.html,如需转载请自行联系原作者

相关文章
|
7月前
|
编解码 网络协议 Android开发
播放器之争:VLC VS SmartPlayer
好多开发者跟我们交流的时候提到,为什么有了VLC这种开源播放器,大牛直播SDK还要开发SmartPlayer?以下就针对VLC和SmartPlayer功能支持和涉及侧重,做个大概的比较:
166 0
|
9月前
|
Linux API 开发工具
[开源]基于ffmpeg和libvlc的视频剪辑、播放器
[开源]基于ffmpeg和libvlc的视频剪辑、播放器
156 0
|
7月前
|
编解码 API Android开发
ijkplayer、VLC Player、SmartPlayer、ExoPlayer播放器比较
ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,如果只是使用它进行播放,集成也较为简单,使用也和MediaPlayer差不多,但是要定制化需求,就有一定的门槛高度。支持软硬编解码,支持倍速播放,可以定制化集成需要的功能,集成占用体积也很小,更详细的解释参看下面官方介绍:
536 0
|
7月前
|
监控 数据处理 开发工具
Windows平台RTSP播放器/RTMP播放器设计需要考虑的几个点
我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计、多绘制模式兼容、软硬解码支持、快照、RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概的探讨。
|
7月前
|
编解码 网络协议 Android开发
6款真正好用的播放器推荐
GOM player 是一款本身装有视频播放所需的解码,及占用系统资源少,并且能以最优秀的画质来观看多种格式影片的播放程序。
213 0
|
存储 编解码 API
FFmpeg简易播放器的实现1-最简版
基于 FFmpeg 和 SDL 实现的简易视频播放器,主要分为读取视频文件解码和调用 SDL 播放两大部分。
401 0
FFmpeg简易播放器的实现1-最简版
|
开发工具 C++ Windows
用C/C++开发基于VLC SDK的视频播放器
在windows系统如果开发万能播放器,一般都是基本DirectShow来开发,开发也很简单,但缺点也很多,一个文件格式是否能够播放完全取决于你 是否安装了正确的解析器和解码器,即使现在有了万能解器安装包也会出现很多问题,不过自从很多开源软件的出现,比如大名鼎鼎的ffmpeg,vlc等,一 切都变得...
2268 0
|
编解码 Windows 内存技术
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
618 0
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)