APlayer 媒体播放引擎是迅雷公司从 2009 年开始开发的通用音视频媒体文件播放内核。 迅雷看看播放器和迅雷影音就是使用 APlayer 做为播放内核,目前迅雷看看播放器在PC播放器市场占有率排第一。 本质上APlayer播放引擎是一个ActiveX控件,能够被本地其余外部程序嵌入调用,也能够直接被网页嵌入,相似于(Adobe Flash Player)。APlayer不包含界面,但另外一个依赖于APlayer的ActiveX控件APlayerUI能够提供丰富的界面元素(播放控制条,Flash广告等),APlayerUI 也被包含在 APlayerSDK 中。
封闭式 DirectShow 架构,不受系统解码环境干扰 全媒体文件格式支持 丰富的媒体文件传输协议(http/ftp/mms/rtsp/rtmp/hls等) 强大的附加功能(字幕、音轨、转码/转格式、画质加强、截GIF……) 支持将多个 ts/flv/mp4 分段切片文件组成 m3u8 无缝播放 支持最新的 H.265(HEVC) 解码 (Powered by北京视骏科技有限公司) 支持全景视频和虚拟现实(VR)眼镜 Oculus DK2 的播放。
建议直接到APlayer官网下载最新版本架构
先下载SDK和解码库,下载后先解压SDK,解压后SDK根目录以下工具
其中bin目录中存放的就是一些dll文件和解码库,docs目录下是官方帮助文档,include目录下是什么我也不知道,samples目录下是官方的demo,不过貌似是C++的。咱们须要用到的只有bin目录和docs目录下的东西。spa
接下来打开bin目录,将下载的解码库解压到bin目录下,覆盖原有的空解码库文件夹(codecs文件夹),覆盖完成后退回SDK根目录,打开cmd(怎么打开确定不用说吧),跳转到SDK根目录,执行install.bat,等待完成后就能够关掉了。code
接下来打开VS,新建一个Winform项目,完成后再工具箱空白处右键>添加选项卡 ,而后将新建的选项卡命名为APlayer,而后在新建的选项卡上右键>选择项,而后在打开的窗口上选择COMorm
而后里面有个APlayer3 Control,把前面的复选框选中,而后点击肯定就OK了,若是你的里面没有,那么请重复第二步,而且以管理员权限运行cmd。视频
点击肯定后APlayer选项卡中就有一个APlayer3 Control组件了,拖到窗体上就能用了。blog
到这一步还没完,由于如今你写的程序,发给别人后,别人还要安装APlayer才行,想要直接发给别人就能够用的话,须要先打开解决方案资源管理器,选中引用中的APlayer3Lib,而后打开属性面板,将里面的独立属性和嵌入互操做性属性改为True事件
到此APlayer就安装完成了(貌似后面的部分已经不属于APlayer的安装范围了 =.=)ip
接下来是APlayer的使用,先打开APlayerSDK根目录下的docs文件夹里面的官方手册(APlayer.chm)资源
手册目录里面的什么IDL定义啊什么的都不用看,和C#没什么关系,主要是看APlayer方法、事件和设置。
APlayer方法没什么好说的,也就是APlayer.方法名(参数),每一个方法是干吗的也有解释,写播放器的话我认为这些基础的东西应该都会了吧。
APlayer虽然在VS属性面板中有事件,可是貌似并无什么用,事件仍是要本身写,因此就讲一下APlayer事件的用法吧,下面用OnMessage事件为栗来说解。
先写个名为OnMessage(方法名能够本身定义,建议直接用事件名)的方法:
/// <summary> /// OnMessage 事件发生在用户在 APlayer 视频区域引起鼠标操做或者当 APlayer 视频区域拥有焦点时引起键盘操做时。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void OnMessage(object sender,AxAPlayer3Lib._IPlayerEvents_OnMessageEvent e) { // 方法体 }
该方法有两个参数,第一个是object类型,第二个是APlayer内的一个类型,每一个方法对应不一样的类型,举个栗子:
OnMessag事件就是AxAPlayer3Lib._IPlayerEvents_OnMessageEvent
OnStateChanged事件就是AxAPlayer3Lib._IPlayerEvents_OnStateChangedEvent
OnDownloadCodec事件就是AxAPlayer3Lib._IPlayerEvents_OnDownloadCodecEvent
而后在窗口的Load事件里面,将定义的OnMessage方法绑定(委托?拜托?指定?指引?绑架?反正就是这个意思而已)
APlayer.OnMessage += new AxAPlayer3Lib._IPlayerEvents_OnMessageEventHandler(OnMessage);
绑定的方法就是:
APlayer.事件名 += new APlayer中事件对应的类(要绑定的方法名)
再举个栗子:
OnMessage 事件就是: APlayer.OnMessage += new AxAPlayer3Lib._IPlayerEvents_OnMessageEventHandler(OnMessage); OnStateChanged事件就是: APlayer.OnStateChanged += new AxAPlayer3Lib._IPlayerEvents_OnStateChangedEventHandler(OnStateChanged); OnDownloadCodec事件就是: APlayer.OnDownloadCodec += new AxAPlayer3Lib._IPlayerEvents_OnDownloadCodecEventHandler(OnDownloadCodec);
这样就能够绑定事件了,而后在本身写的方法中写事件触发时要执行的代码。
APlayer设置的话主要是经过GetConfig和SetConfig方法来完成,GetConfig用于获取设置的值,SetConfig用于设置对应设置的值。
返回值:string GetConfig(int 设置编号)
返回值:int GetConfig(int 设置编号,string 设置值)
设置编号能够查看官方手册中的 “APlayer 设置” 章节