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下载

建议直接到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

原文地址:https://www.cnblogs.com/zhangwc/p/12154650.html

时间: 2024-10-17 09:59:35

C# 调用APlayer教程的相关文章

C#基础之异步调用实例教程

本文实例形式展示了C#中异步调用的实现方法,并对其原理进行了较为深入的分析,现以教程的方式分享给大家供大家参考之用.具体如下: 首先我们来看一个简单的例子: 小明在烧水,等水烧开以后,将开水灌入热水瓶,然后开始整理家务 小文在烧水,在烧水的过程中整理家务,等水烧开以后,放下手中的家务活,将开水灌入热水瓶,然后继续整理家务 这也是日常生活中很常见的情形,小文的办事效率明显要高于小明.从C#程序执行的角度考虑,小明使用的同步处理方式,而小文则使用的异步处理方式. 同步处理方式下,事务是按顺序一件一件

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

近期在做一个 WEB 项目.须要调用 OCX 进行连接读卡器读卡.本来并不想用 OCX 技术.由于 ActiveX 技术是微软出品.这样就导致整个系统仅仅能使用 IE 浏览器(其它浏览器能够通过插件的形式支持 OCX 的调用).但尝试了非常多方法调用client DLL 发现都走不通.最后无奈之下,才打算研究 OCX 技术. 网上都说 ActiveX 技术非常麻烦,会出现各种错误.不做的时候不知道,真正须要研究时候,才发现确实如此. 主要问题是,报错和问题的真正原因没有关系或者说关系不大.甚至非

OCX 打包 CAB 与 JS 调用详细教程

最近在做一个 WEB 项目,需要调用 OCX 进行连接读卡器读卡.本来并不想用 OCX 技术,因为 ActiveX 技术是微软出品,这样就导致整个系统只能使用 IE 浏览器(其他浏览器可以通过插件的形式支持 OCX 的调用).但尝试了很多方法调用客户端 DLL 发现都走不通.最后无奈之下,才打算研究 OCX 技术. 网上都说 ActiveX 技术很麻烦,会出现各种错误,不做的时候不知道,真正需要研究时候,才发现确实如此.主要问题是,报错和问题的真正原因没有关系或者说关系不大,甚至很多时候没有报错

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

调用指定栏目名称: {$CATEGORYS[栏目ID]['catname']} 调用指定栏目url {$CATEGORYS[栏目ID]['url']} 调用指定栏目栏目图片 {$CATEGORYS[栏目ID]['image']} 调用指定栏目栏目描述 {$CATEGORYS[栏目ID]['description']} 调用指定栏目子栏目 {pc:content action="category" catid="栏目ID" num="" order

基于我们3组的网易云APP制作,找的APlayer H5音乐播放器

APlayer是一个非常漂亮的HTML5音频播放器,UI参考自网易云音乐外链播放器.它将audio标签封装,并结合CSS制作出漂亮的播放器UI,它支持设置歌名.歌手和歌词,可以设置是否自动播放,支持缩略图,支持播放进度以及设置播放源. HTML 首先是要加载播放器样式文件,这个播放器的样式酷似网易云音乐播放器.接着载入APlayer.js文件.然后在body中加入播放器div#player1,用于显示播放.<link rel="stylesheet" href="APl

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

进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的开发工作,登录页面设计将采用Div+Css简单进行设计,最终效果图如下: Mvc一个页面模块至少要实现C层的逻辑代码跟,V层的页面代码,在浏览器访问地址时执行C层代码,在呈现页面,具体创建流程如下: 一.登录C层(Controllers)创建 1.创建Login控制器类 在解决方案管理器Contro

非常漂亮的HTML5音乐播放器

APlayer是一个非常漂亮的HTML5音频播放器,它将audio标签封装,并结合CSS制作出漂亮的播放器UI,它支持设置歌名.歌手和歌词,可以设置是否自动播放,支持缩略图,支持播放进度以及设置播放源. 查看演示 下载源码 HTML 首先是要加载播放器样式文件,这个播放器的样式酷似网易云音乐播放器.然后在body中加入播放器div#player1,待会要调用播放.接着载入APlayer.js文件. <link rel="stylesheet" href="APlayer

info

info [功能说明]: info - read Info documents        #阅读Info文档 info是一种文档格式,也是阅读此格式文档的阅读器,我们通常用它来查看Linux命令的info文档,它以主题的形式把几个命令组织在一起,以便于我们阅读,在主题内以node<节点>的形式把本主题的几个命令串联在一起:info 适用于查询外部命令的帮助信息. [语法格式]: info [OPTION]... [MENU-ITEM...] info [选项] ...[菜单项] [[ema

利用django创建一个投票网站(二)

创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site). 设计哲学 为你的员工和客户创建一个用于添加.修改和删除网站内容的管理页面是一项乏味的工作,而且不需要太多的创造力.因为这些原因,Django 提供完全自动地为模型创建管理接口的功能. Django 产生于一个公众页面和内容发布者页面完全分离的新闻类站点的开发过程中.站点管理人员使用管理系统来添