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. selenium 环境配置

    一.确认系统中已安装python版本,如果没有,请参考[这里] 二.打开系统命令页面 [window + R].输入cmd回车 三.cmd环境下,用[pip install selenium ]命令安 ...

  2. 小程序图片 mode 设置为 widthFix 图片显示瞬间竖向拉伸变形闪烁

    官方文档中 mode="widthFix"   宽度不变,高度自动变化,保持原图宽高比不变,即设置图片宽度而高度自适应. 但是在实际开发中发现图片在初始加载时瞬间竖向拉伸变形闪烁然 ...

  3. GAN tensorflow 实作

    从2014年Ian Goodfellow提出GANs(Generative adversarial networks)以来,GANs可以说是目前深度学习领域最为热门的研究内容之一,这种可以人工生成数据 ...

  4. 题解 SP1716 【GSS3 - Can you answer these queries III】

    \[ Preface \] 没有 Preface. \[ Description \] 维护一个长度为 \(n\) 的数列 \(A\) ,需要支持以下操作: 0 x y 将 \(A_x\) 改为 \( ...

  5. LeetCode 127. Word Ladder 单词接龙(C++/Java)

    题目: Given two words (beginWord and endWord), and a dictionary's word list, find the length of shorte ...

  6. 机器学习(ML)十四之凸优化

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...

  7. 深入了解MySQL,一篇简短的总结

    MySQL的基本语法 这里作为MySQL部分模块的深入了解,大部分都是理论方面的笔记,不会写具体用法. 具体用法会记录在下面这个随笔分类下,不过暂时还没更新完,等过段时间会更新下事务.存储过程.索引等 ...

  8. 图像里的"白噪声"——电视机搜不到台时雪花斑点的形成原因

    作者:❄️固态二氧化碳❄️ (主页) 链接:图像里的"白噪声"--电视机搜不到台时雪花斑点的形成原因 - 固态二氧化碳的博客 - CSDN博客 来源:CSDN博客 发表时间:201 ...

  9. centos6.5下部署sersync+rsync --daemon同步数据

    rsync --daemon端配置 [root@rsync-daemon etc]# /etc/init.d/iptables stop [root@rsync-daemon ~]# dos2unix ...

  10. margin合并及解决办法

    外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 水平方向不会发生合并 只有普通文档流中块框的垂直外边距才会发生外边距合并 ...