惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
I
InfoQ
The Register - Security
The Register - Security
L
LangChain Blog
H
Help Net Security
The GitHub Blog
The GitHub Blog
S
Schneier on Security
博客园 - 【当耐特】
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
雷峰网
雷峰网
N
Netflix TechBlog - Medium
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
博客园 - 聂微东
PCI Perspectives
PCI Perspectives
Last Week in AI
Last Week in AI
A
Arctic Wolf
宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
S
Secure Thoughts
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
SecWiki News
SecWiki News
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
Schneier on Security
Schneier on Security
P
Proofpoint News Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AI
AI
Engineering at Meta
Engineering at Meta

博客园 - 取经路上

IIS 下发布SignalR 访问接口进不去处理 Linux下部署.Net 应用程序和Web应用程序 CentOS 7 配置启动 手动编译的 nginx CentOS 7 nginx 安装 sticky模块 关于SignalR并发量测试 C# 采用HttpWebRequest 、WebClient和HttpClient下载https的文件异常问题 C# 判别系统版本以及Win10的识别办法 MVC ActionResult 视图模型 MVC 前后台传值 MVC基础关键点 sqlserver 数据库、日志文件收缩 笔记 vue-cli启动报错问题: IE6无法获取class属性 windows server 2008 r2 datacenter 共享服务找不到网络路径解决办法 在Visual Studio 中的监视窗口中监视Com对象变量 删除GitHub上项目中的某个文件 转 WPF MVVM 循序渐进 (从基础到高级) 服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/QueryUserName。
C# 调用迅雷aplayer播放器的遇到的问题总结
取经路上 · 2024-03-27 · via 博客园 - 取经路上

事件的起因是,目前发布的软件版本中,视频播放使用的是腾讯云点播提供的html版本的播放器(我们的视频存放在腾讯云点播上),客户端采用的是.net framework3.5 开发的,采用WebBrowser内核加载和其它的一个浏览器内核加载后端的页面,通过传参进行视频播放,这种方式在部分用户电脑是会出现腾讯云视频解码的问题,无法和用户交代,考虑在找一种备用方案进行弥补。

首先我们C# 程序员肯定想到到的是采用VLC 播放器,在网上看了多个版本和案例,基本都是.net framework4.0 及以上版本,找到部分支持.net framework3.5的版本,提供的案例很简单,部分功能总是很难实现,例如播放在线url视频,进度控制,没有相对应的接口,或调用接口没用反应(当然这肯定不是vlc的问题,主要是VLC是C++开发的代码,C#封装调用出的问题,能力有限,源码改不动)。在使用VLC时遇到一个很奇怪的问题,当进度控制和播放在线url视频都调试正常时,点击视频播放的图像,UI直接卡死,感觉应该内部UI线程处理的问题,没能解决,折腾了半天,恋恋不舍的放弃了。

继续百度啊,功夫不负有心人,终于找打一个帖子,C# 视频播放器 采用迅雷Aplayer 绿色使用无需安装 支持VS2022,如获至宝,认真拜读,发现描述都是符合我的项目需求的,但是作者没有留下源码,心里万马奔腾,尝试给作者留言,如石沉大海,至今了无音讯。

还好作者提供了  迅雷APlayer媒体播放引擎-首页 的地址 进入主页后,下载了最新的sdk 发现没有找到APlayerCaller.dll。那就继续逛APlayer论坛,终于找到APlayerCaller.dll的作者发的帖子了,在上面提供下载APlayerCaller.dll的C++封装的源码,直接下载源码干活,下载后发现项目无法采用VS2022编译通过,缺失文件,项目里面作者也没有留编译好的APlayerCaller.dll文件。

根据编译提示进行完善项目,从提供的源码工程上看,作者是采用vs2003编译的,网上找了很久最终也没能安装上vs2003,安装难度感觉很大,各种环境条件不匹配(可能是没有完整的安装程序,缺少必要的组件包)。

首先提示缺少文件:afxres.h,这个头文件 比较好找,下载后放到项目里面,这条错误消息消失了,接着第二个问题来了。

再次编译提示缺少atl.lib,在vs2022安装路径下搜索,找到一个类似的atls.lib,抱着试试看的态度,果然不行。

想了下应该是编译版本的的问题,正好电脑上有之前学vc用的VC6.0安装了之后,找到了alt.lib,放到项目下编译,编译通过了,看到APlayerCaller.dll,心情激动。

按照论坛上提供的方法进行调用,依然报错,找不到指定模块"和BadImageFormatException异常,这个错误比较好解决,是编译平台和调用平台不匹配的问题,调整好平台问题后,顺利解决。

在次调用发现在创建播放器时返回的句柄为0x00000000,还是没有看到播放器的界面。

Handle = APlayer_Create(hParentWnd, x, y, nWidth, nHeight, onMessage, onStateChanged, onOpenSuccess, onSeekCompleted, onBuffer, onVideoSizeChanged, onDownloadCodec, onEvent);

思考片刻感觉是alt.lib的版本问题,既然2003下载不到,看看vs2005,顺利安装vs2005,也找到了alt.lib文件,编译也顺利通过。

创建播放器对象时,出现了新的错误 :程序运行无法加载 C++ DLL“APlayerCaller.dll”: 找不到指定的模块,用依赖工具看了下需要alt80.dll, alt80.dll还有多个dll依赖。找了半天没凑齐这个大家族。

突然想到之前下载的vs2003的安装程序里面应该有alt.lib文件,搜索了一下 果然找到正主了。编译后,创建播放器正常,播放视频正常。

此刻遇到一个新的问题,视频播放窗口大小是固定的,不能缩放,试着处理了多个方法,没有生效。

看到作者的APlayerCaller.dll源码中有写这个方法,但是此方法没有放到导出列表中。将方法放到列表中,重新编译,调用一切正常。

文件下载地址包含迅雷最新解码器调试完成的源码,在vs2022中编译后可以直接使用。