首页 > 编程语言 >C# 调用迅雷aplayer播放器的遇到的问题总结

C# 调用迅雷aplayer播放器的遇到的问题总结

时间:2024-03-27 11:58:03浏览次数:40  
标签:播放器 视频 APlayerCaller 编译 C# dll aplayer 源码

事件的起因是,目前发布的软件版本中,视频播放使用的是腾讯云点播提供的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中编译后可以直接使用。

 

标签:播放器,视频,APlayerCaller,编译,C#,dll,aplayer,源码
From: https://www.cnblogs.com/ankeyliu/p/18098574

相关文章

  • ChatTuGraph:通过大模型“与图对话”
    使用SQL(StructuredQueryLanguage)对数据库/数据仓库进行查询分析操作,几乎成了研发工程师和数据分析师的“家常便饭”,然而要写出高效、清晰、优雅的SQL脚本并非易事。随着大语言模型(LLM)技术的普及,借助大模型微调(FineTuning)等技术将自然语言自动翻译为SQL语句(NL2SQL/Text2SQL)便成......
  • John Deere Service Advisor EDL V3 Electronic Data Link Diagnostic Kit
    JohnDeereServiceAdvisorEDLV3ElectronicDataLinkDiagnosticKitisapowerfultooldesignedspecificallyforheavy-dutymachineryusedinconstruction,agriculture,enginesbyJohnDeere.Thisdiagnosticadapterisessentialfortechniciansandoper......
  • Oracle 分页查询,排序分页
    效率最高内查询小于等于外查询大于select*from(selectt.*,rownumasnfromSTUDENTtwhererownum<=4)twheret.n>2orderbyt.iddesc;查看执行计划explainplanforselect*from(selectrownumasn,d.*fromdeptdwhererownum<=4)twheret.n>......
  • JDBC复习
    JDBC导入驱动jar包,注册驱动,获取连接定义sql获取执行sql的对象,执行sql处理结果:查询需要处理结果,增删改只需要判断count>0,有没有执行成功;释放资源Class.forName("com.mysql.cj.jdbc.Driver");Connectionconnection=DriverManager.getConnection(url,username,password);......
  • 管道(NamedPipeClientStream)连接报“访问路径被拒绝”
    问题:NamedPipeClientStream对象调用Connect(毫秒)时报“访问路径被拒绝”解决:在服务端(NamedPipeServerStream)中添加PipeSecurity对象SecurityIdentifiersecurityIdentifier=newSecurityIdentifier(WellKnownSidType.AuthenticatedUserSid,null);PipeSecuritypipeSecur......
  • Oracle 小知识
    --会乱码SELECTsys_guid()fromdual;--大写uuidSELECTRAWTOHEX(SYS_GUID())FROMdual;--小写SELECTlower(sys_guid())fromdual;--列拼接SELECTname||create_time||idaFROMSTUDENTs;--字符串拼接SELECT'张三'||'李四'||'王五'nameFROM......
  • blog-engine-07-gatsby 建极速网站和应用程序 基于React的最佳框架,具备性能、可扩展
    拓展阅读blog-engine-01-常见博客引擎jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman对比blog-engine-02-通过博客引擎jekyll构建githubpages博客实战笔记blog-engine-02-博客引擎jekyll-jekyll博客引擎介绍blog-engine-02-博客引擎jekyll-jekyll如何......
  • pageoffice6控制在线打开的Excel编辑区域(局部编辑)
    转发:控制Excel编辑区域(局部编辑)#控制Excel编辑区域(局部编辑)本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。在实际项目开发中,以下场景可能会用到Excel局部编辑......
  • Halcon深度学习项目实战
    Halcon在机器视觉中的价值主要体现在提供高效、可扩展、灵活的机器视觉解决方案,帮助用户解决各种复杂的机器视觉问题,提高生产效率和产品质量。缩短产品上市时间Halcon的灵活架构使其能够快速开发出任何类型的机器视觉应用。其全球通用的集成开发环境(HDevelop)有助于降低产品......
  • E810-CQDA1 E810-CQDA2 E810-2CQDA2 E810-XXVDA2 E810-XXVDA4 英特尔®以太网800系列
    E810-CQDA1E810-CQDA2E810-2CQDA2E810-XXVDA2E810-XXVDA4英特尔®以太网800系列Linux性能调优指南(第二篇续)4.0性能故障处理4.1CPU利用率在工作负载运行时检查每个核心的CPU利用率。注意:与总体CPU利用率相比,每个核心的利用率与性能更相关,因为它提供了每个网络队列......