-
C# 调用APlayer教程
APlayer介绍
引擎介绍:
APlayer 媒体播放引擎是迅雷公司从 2009 年开始开发的通用音视频媒体文件播放内核。 迅雷看看播放器和迅雷影音就是使用 APlayer 作为播放内核,目前迅雷看看播放器在PC播放器市场占有率排第一。 本质上APlayer播放引擎是一个ActiveX控件,可以被本地其他外部程序嵌入调用,也可以直接被网页嵌入,类似于(Adobe Flash Player)。APlayer不包含界面,但另一个依赖于APlayer的ActiveX控件APlayerUI可以提供丰富的界面元素(播放控制条,Flash广告等),APlayerUI 也被包含在 APlayerSDK 中。
APlayer特点:
封闭式 DirectShow 架构,不受系统解码环境干扰 全媒体文件格式支持 丰富的媒体文件传输协议(http/ftp/mms/rtsp/rtmp/hls等) 强大的附加功能(字幕、音轨、转码/转格式、画质增强、截GIF……) 支持将多个 ts/flv/mp4 分段切片文件组成 m3u8 无缝播放 支持最新的 H.265(HEVC) 解码 (Powered by北京视骏科技有限公司) 支持全景视频和虚拟现实(VR)眼镜 Oculus DK2 的播放。
APlayer下载
- APlayerSDK(版本:3.10.0.816)
- APlayer完整解码库(版本同上)
建议直接到APlayer官网下载最新版本
APlayer安装
先下载SDK和解码库,下载后先解压SDK,解压后SDK根目录如下
其中bin目录中存放的就是一些dll文件和解码库,docs目录下是官方帮助文档,include目录下是什么我也不知道,samples目录下是官方的demo,不过貌似是C++的。我们需要用到的只有bin目录和docs目录下的东西。
接下来打开bin目录,将下载的解码库解压到bin目录下,覆盖原有的空解码库文件夹(codecs文件夹),覆盖完成后退回SDK根目录,打开cmd(怎么打开肯定不用说吧),跳转到SDK根目录,执行install.bat,等待完成后就可以关掉了。
接下来打开VS,新建一个Winform项目,完成后再工具箱空白处右键>添加选项卡 ,然后将新建的选项卡命名为APlayer,然后在新建的选项卡上右键>选择项,然后在打开的窗口上选择COM
然后里面有个APlayer3 Control,把前面的复选框选中,然后点击确定就OK了,如果你的里面没有,那么请重复第二步,并且以管理员权限运行cmd。
点击确定后APlayer选项卡中就有一个APlayer3 Control组件了,拖到窗体上就能用了。
到这一步还没完,因为现在你写的程序,发给别人后,别人还要安装APlayer才行,想要直接发给别人就可以用的话,需要先打开解决方案资源管理器,选中引用中的APlayer3Lib,然后打开属性面板,将里面的独立属性和嵌入互操作性属性改成True
到此APlayer就安装完成了(貌似后面的部分已经不属于APlayer的安装范围了 =.=)
APlayer使用
接下来是APlayer的使用,先打开APlayerSDK根目录下的docs文件夹里面的官方手册(APlayer.chm)
手册目录里面的什么IDL定义啊什么的都不用看,和C#没什么关系,主要是看APlayer方法、事件和设置。
APlayer方法
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设置
APlayer设置的话主要是通过GetConfig和SetConfig方法来完成,GetConfig用于获取设置的值,SetConfig用于设置对应设置的值。
返回值:string GetConfig(int 设置编号)
返回值:int GetConfig(int 设置编号,string 设置值)
设置编号可以查看官方手册中的 “APlayer 设置” 章节
Demo下载
我找了两个Demo,可以下载看看,里面还有设置logo的方法
Demo下载
https://pan.baidu.com/s/1nBinLLcUI_75u5EDW0Rpsw
APlayer
https://pan.baidu.com/s/1hum3qm6BEE7Ffi0tJDVakQ