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教程的更多相关文章

  1. WebService调用SSAS教程

    WebService调用SSAS教程 一.创建SSAS项目 使用SQL Server Business Intelligence Development Studio新建Analysis Servic ...

  2. OCX 打包 CAB 与 JS 调用具体教程

        近期在做一个 WEB 项目.须要调用 OCX 进行连接读卡器读卡.本来并不想用 OCX 技术.由于 ActiveX 技术是微软出品.这样就导致整个系统仅仅能使用 IE 浏览器(其它浏览器能够通 ...

  3. phpcms v9指定栏目调用系列教程

    调用指定栏目名称: {$CATEGORYS[栏目ID]['catname']} 调用指定栏目url {$CATEGORYS[栏目ID]['url']} 调用指定栏目栏目图片 {$CATEGORYS[栏 ...

  4. WCF 入门调用实例教程

    WCF的相关概念信息就不在此赘述了,网上一搜一大把. 现在让我们动手搭建我们的第一个wcf程序吧,具体流程如下: 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序. 2 ...

  5. 百度移动统计调用api教程,少进坑(82001错误)

    相信很多小伙伴使用了百度统计,来查看自己应用使用的情况,但是会发现百度移动统计在官网没有api调用取数据的接口, 现在我就以自己成功调用api并且成功拿到数据,将这个步骤给大家参考,(末尾有调用移动统 ...

  6. Http接口调用示例教程

    介绍HttpClient库的使用前,先介绍jdk里HttpURLConnection,因为HttpClient是开源的第三方库,使用方便,不过jdk里的都是比较基本的,有时候没有HttpClient的 ...

  7. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  8. 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)

    总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...

  9. mybatis调用存储过程(@Select方式)

    存储过程还不会写的同学可以参考我另一篇文章:https://www.cnblogs.com/liuboyuan/p/9375882.html 网上已经有很多用mybatis调用的教程了,但是大部分是x ...

随机推荐

  1. 洛谷P1649 【[USACO07OCT]障碍路线Obstacle Course】

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  2. Codeforces 1138B Circus (构造方程+暴力)

    题意: 给你两个01串,要你选n/2个位置,使得选的位置在s1中"1"的数量等于未选的s2中"1"的数量 n<=5000,1s 思路: 设两个串中出现&q ...

  3. Go语言实现:【剑指offer】和为S的连续正数序列

    该题目来源于牛客网<剑指offer>专题. 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数 ...

  4. 【WPF学习】第四十五章 可视化对象

    前面几章介绍了处理适量适中的图形内容的最佳方法.通过使用几何图形.图画和路径,可以降低2D图形的开销.即使正在使用复杂的具有分层效果的组合形状和渐变画刷,这种方法也仍然能够正常得很好. 然而,这样设计 ...

  5. Vue简介与基础

    一.什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于 ...

  6. webpack性能优化

    Webpack优化打包速度以及性能优化 1.跟上技术的迭代(Node.Npm.Yarn) 2.在尽可能少的模块上应用loader 3.Plugin尽可能精简并确保可靠 4.resolve参数合理配置 ...

  7. webpack之打包分析以及prefetching和preloading

    打包分析: https://webpack.js.org/guides/code-splitting/#bundle-analysis        性能优化使用缓存是很有限的,现在更多的应该是再编写 ...

  8. 关于宏MACRO,我们需要知道的事

    一.先从最宏观的角度来了解宏,这里的宏观角度是指程序的运行流程: 1,提交代码后,SAS先把代码读取储存到堆栈中: 2,用文本扫描插件来扫描堆栈中的代码,从上到下,从左到右: 3,扫描到一个分号,则编 ...

  9. C primer plus 6 编程练习答案

    环境:vs2017 /**编程练习2**/ */ #include<stdio.h> int main(void) { printf("张三\n"); printf(& ...

  10. 08.JS单词整理

    以下为按照文章顺序简单整理的JS单词, 注意:是JS单词注释,部分与英文不符 01.JS语法规范.变量与常量 console——控制台 log——日志 var——变量 variable变量,变化 co ...