C# 调用APlayer教程
APlayer介绍
引擎介绍:
APlayer 媒体播放引擎是迅雷公司从 年开始开发的通用音视频媒体文件播放内核。
迅雷看看播放器和迅雷影音就是使用 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.(HEVC) 解码 (Powered by北京视骏科技有限公司)
支持全景视频和虚拟现实(VR)眼镜 Oculus DK2 的播放。
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下载 APlayer
C# 调用APlayer教程的更多相关文章
- WebService调用SSAS教程
WebService调用SSAS教程 一.创建SSAS项目 使用SQL Server Business Intelligence Development Studio新建Analysis Servic ...
- OCX 打包 CAB 与 JS 调用具体教程
近期在做一个 WEB 项目.须要调用 OCX 进行连接读卡器读卡.本来并不想用 OCX 技术.由于 ActiveX 技术是微软出品.这样就导致整个系统仅仅能使用 IE 浏览器(其它浏览器能够通 ...
- phpcms v9指定栏目调用系列教程
调用指定栏目名称: {$CATEGORYS[栏目ID]['catname']} 调用指定栏目url {$CATEGORYS[栏目ID]['url']} 调用指定栏目栏目图片 {$CATEGORYS[栏 ...
- WCF 入门调用实例教程
WCF的相关概念信息就不在此赘述了,网上一搜一大把. 现在让我们动手搭建我们的第一个wcf程序吧,具体流程如下: 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序. 2 ...
- 百度移动统计调用api教程,少进坑(82001错误)
相信很多小伙伴使用了百度统计,来查看自己应用使用的情况,但是会发现百度移动统计在官网没有api调用取数据的接口, 现在我就以自己成功调用api并且成功拿到数据,将这个步骤给大家参考,(末尾有调用移动统 ...
- Http接口调用示例教程
介绍HttpClient库的使用前,先介绍jdk里HttpURLConnection,因为HttpClient是开源的第三方库,使用方便,不过jdk里的都是比较基本的,有时候没有HttpClient的 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...
- 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...
- mybatis调用存储过程(@Select方式)
存储过程还不会写的同学可以参考我另一篇文章:https://www.cnblogs.com/liuboyuan/p/9375882.html 网上已经有很多用mybatis调用的教程了,但是大部分是x ...
随机推荐
- BZOJ 1025 [SCOI2009]游戏 (DP+分解质因子)
题意: 若$a_1+a_2+\cdots+a_h=n$(任意h<=n),求$lcm(a_i)$的种类数 思路: 设$lcm(a_i)=x$, 由唯一分解定理,$x=p_1^{m_1}+p_2^{ ...
- for和while——python中的循环控制语句详解
循环语句在绝大多数的语言中,都是必不可少的一种控制语句,循环语句允许我们执行一个语句或语句组多次.在python中有for循环和while循环两种,讲到这里,就不得不提到我们的迭代器对象 迭代器 迭代 ...
- 一个"/"引发的惨案
今天行云流水写了一个接口,正想着写完就睡觉了,结果访问的时候一直报错404,找不到路径,我反复检查了好久,确定路径名字没写错,百思不得其解,瞬间有想砸电脑的冲动,于是准备洗洗睡了,明天再搞 洗玩脚回到 ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第一节:画直线
今天正式开一本新书,<C# GDI+ 破镜之道>,同样是破镜之道系列丛书的一分子. 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子 ...
- PBFT算法java实现
PBFT 算法的java实现(上) 在这篇博客中,我会通过Java 去实现PBFT中结点的加入,以及认证.其中使用socket实现网络信息传输. 关于PBFT算法的一些介绍,大家可以去看一看网上的博客 ...
- cmake处理多源文件目录的方法(转)
cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下: 源代码的分布情况 其中src目录下的文件要编译成一个链接库 第一步,项目主目录中的CMakelist.txt 在 ...
- GitBook安装部署实操手册
前言 GitBook是一个基于Node.js的命令行工具,可使用Git和Markdown来编写文档,赞誉太多,不再赘述. Node.js 下载安装包 cd /tmp wget https://node ...
- js+css页面横屏
<!DOCTYPE html> <html lang='zh'> <head> <meta charset="utf-8" /> & ...
- php页面传递参数值几种方法总结
2013-06-06 18:02 (分类:) 又搞了一个学期的php,就这样吧. php是一种服务器的脚本语言,他也是现在最为流行的WEB开发语言,下面我们来讲述一下几种上在php开发应用中常用的四种 ...
- vue-cli项目引入jquery和bootstrap
1.安装插件 npm install jquery --save npm install bootstrap --save npm install popper.js --save //提示框插件,b ...