C#Winform调用libEasyPlayer总结

Winform中使用EasyPlayer-RTSP-Win开源组件实现播放RTSP视频流 场景 开源RTMP组件EasyPusher-Android+EasyDarwin实现APP推流给RTSP流媒体服务器: 开源RTMP组件EasyPusher-Android+EasyDarwin实现APP推流给RTSP流媒体服务器_BADAO_LIUMANG_QIZHI的博客-优快云博客 上面介绍了RTSP相关的开源组件,如果要在Windows中实现对RTSP视频流的播放, 可以使用开源组件EasyPlayer-RTSP-Win GitHub - tsingsee/EasyPlayer-RTSP 阅读详情

经过一天的调试,Winform调用libEasyPlayer播放RTSP流媒体终于差不多了,留下经验,上一篇已经就怎么调用DLL文件说了,本篇主要讲讲C#项目里具体使用API的情况.

代码基本是抄C++的示例项目,没有弄多个窗口,一个窗口测试OK,其它在Winform中也就没问题了.

调试过程中出现的一个重要问题是OpenStream函数中的回调函数问题,传入的委托方法中更新UI控件时必须要Invoke才可以,但是必须用BeginInvoke,也就是必须是异步的,否则将会有很大的几率卡死,还是该委托方法必须要在类中定义一个委托变量,然后方法赋值给这个变量,在OpenStream中传入该变量,否则托管助手无法追踪这个委托,那么将有一定的几率给回收了,这时就会造成委托异常,如下格式的异常:

托管调试助手“CallbackOnCollectedDelegate”在“xxx”中检测到故障。
其他信息: 对“xxx::Invoke”
类型的已垃圾回收委托进行了回调。
这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,
托管应用程序必须让这些委托保持活动状态,
直到确信不会再次调用它们。

另外关于OpenStream传入void*的问题已找到解决办法,委托就是使用IntPtr定义,然后传入的时候如下示例:

List<string> list1 = new List<string>();
GCHandle handle1 = GCHandle.Alloc(list1);
IntPtr parameter = (IntPtr) handle1;

获取的时候如下示例:

GCHandle handle2 = (GCHandle) parameter;
List<string> list2 = (handle2.Target as List<string>);

list2.Add("hello world");


嗯,好像没有什么再需要注意的了,一会传代码资源,顺便将DLL依赖查看器以及上一篇提的那个工具打包进去了....

优快云上传账户被锁定....

已解锁,资源地址:

http://download.youkuaiyun.com/download/xinxinsky/9960472

Winform播放RTSP流.zip 实现Winform下的摄像机rtsp码流播放功能,demo可以直接运行 立即下载

相关推荐

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

Winform调用视频流媒体服务器HTTP接口实现客户端播放请求流程

因为每个开发者的开发环境不同,因此需求也都不同,有的开发者对二次开发比较感兴趣,那么几个关键的接口就一定要知道并且懂得如何使用。每次我收到并且为大家解决一些新问题的时候,总是会先不断进行调试,不断更新我们的接口和服务器,然后记录下来,所以也不难理解为什么我头发越来越少,有些问题真的让人头大。 最近有开发者咨询Winform客户端对接EasyNVR的问题,所以我也来简单梳理一下这个流程。这个问题的...

AI与流媒体视频技术 1654

基于eNSP的小型企业网络设计

在本次计算机网络课程设计中,围绕“小型企业网络搭建”这一主题,成功构建了一个高效、安全且易于管理的企业内部网络。通过本次课程设计,我们不仅掌握了小型企业网络搭建的关键技术和最佳实践,还培养了团队协作和问题解决的能力。本项目所构建的网络系统不仅满足了当前的业务需求,还具备良好的可扩展性和灵活性,为企业未来的数字化转型奠定了坚实的基础。

m0_67403143的博客 1442

C#调用libEasyPlayer动态库,实现RTSP流播放

为什么80%的码农都做不了架构师?>>> ...

weixin_34218890的博客 1222

数字逻辑设计大程——以撒的结合(Verilog语言)

前言 在大二学习数字逻辑设计课程(即计算机组成课程的前引课)时,期末大程题目我和同组的github成员lwaekfjlk 决定写一款基于Verilog语言的游戏。原型是我们两人都非常喜爱的一款游戏——The Binding of Isaac: Rebirth。在三天三夜的奋战后,基本完成了预期目标。由于亲自编写了其中种种,我们深知新手初期使用Verilog语言有多困难。而可悲的是,这又是之后计算机组成课程和体系结构课程所需的!因此,我们将top部分源码放在这里,供同袍们参考。若想引用还请注明出处。 代码部分

LuvLucifer的博客 1384

CentOS校园网Web Portal认证自动化实战

Web Portal认证是一种基于HTTP重定向与表单提交的强制网络准入机制,其原理是网关劫持未认证流量并跳转至登录页,验证通过后通过Cookie维持会话授权。该技术广泛应用于高校、机场、酒店等场景,核心价值在于细粒度访问控制与用户身份绑定。典型应用包括Linux命令行环境下的校园网接入、无GUI设备的自动联网、以及实验室集群的集中认证管理。本文聚焦CentOS系统,深入解析curl、cookie持久化、动态表单参数提取等关键技术环节,提供可调试、可复现、可工程化的完整认证流水线。

weixin_30522983的博客 265

callbackOnCollectedDelegate 异常

使用回调函数时,回掉函数的函数指针没有给其他函数指针。当再次使用回调函数时,函数已经被释放了。所以应该将函数指针让其他的函数指针保存

maoxiaohai123的博客 2374

从贝叶斯网络到结构因果模型:因果推理在可解释AI中的实践

在机器学习和数据分析领域,理解变量间的因果关系而不仅仅是统计关联,是构建可信赖、可解释系统的关键。概率图模型,特别是贝叶斯网络,通过有向无环图和条件概率表,能够高效地编码和推理变量间的条件依赖关系,广泛应用于医疗诊断、风险评估等场景。然而,贝叶斯网络主要刻画的是“是什么”的关联,难以回答“如果…会怎样”的因果问题。为了进行因果推断,需要引入结构因果模型和do-演算,它们通过定义结构方程和模拟干预操作,能够区分混杂效应,估计处理变量对结果变量的净因果影响。这一套方法论对于可解释人工智能至关重要,它能生成反事实

weixin_42168902的博客 379

类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法

《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法 源程序部分代码如下 ///<summary> ///安装钩子的函数 ///</summary> ///<paramname="idHook"></param> ///<paramname="lpfn"&gt...

ZHANG13HAO的博客 1756

Alist/Openlist 的 WebDAV 老是连不上?别再乱试了,这才是标准答案!(1Panel如何使用Alist/Openlist作为备份账号)

😫服务器硬盘告急,想用 Alist/Openlist 的 WebDAV 备份却屡屡失败?别慌!本文带你揭秘正确的连接地址和权限配置,手把手教你搞定 1Panel 备份设置,让你的网盘秒变备份仓库!

XiaoqiangClub的博客 5587

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第9套模块A:网络构建 & (三)无线网络配置+(四)出口网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第9套模块A:网络构建 & (三)无线网络配置+(四)出口网络配置-命令配置

君逍遥o 1017

C#Winform调用EasyDarwin项目中的libEasyPlayer.dll

本想把这个测试项目优化完再写经验的,想想还是现在就记下来吧,到时候再写恐怕都忘的差不多了,言归正传. 最近在研究EasyDarwin项目,这个开源项目对车载视频监控项目开发来说真是个福音,起码让我这没有门路的人找到了头绪,下载资源学习了解也不短时间了,但由于当前项目的客户端是基于C#开发的,要想将RTSP播放器集成到当前项目里就得考虑C#调用C++的DLL问题了.现在说下引用libEasyPla

路过的Blog 3456

duilib 之 事件--bubbled冒泡事件应用、通用点击事件、进入离开事件、XML样式中直接添加事件

1. box 绑定点击事件 ui::Box *pSmallVideoBox = (ui::Box*)FindControl(L"rightBox"); if (pSmallVideoBox) { auto SwitchVideo = [this](ui::EventArgs* param){ m_bSecScreenIsScale = m_bMainScre...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 972

【WinForm】WinForm实现音乐播放器

WinForm调用音频播放库文件,加载音频文件进行播放等操作

杰西笔记 974

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

winform调用http

一、post请求实现 public static string PostHttp(string url, string jsonParmaData) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); ...

weixin_30455365的博客 616

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# 的winform程序竟然可以这样开启Http服务.

写C#少说也有10来年了. 竟然可以在winform中这样开启Http服务, 以后可以不要iis了. 代码摘抄自AIBOX的Demo using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; namespace A

走错路的程序员 4967

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【技术原创】如何在Winform程序中播放视频及实现播放列表

写在前面: 此文章主要讨论了如何在Winform下播放视频及视频的列表播放,此方法已经在公司的产品项目中使用超过半年,现公开与大家讨论,欢迎参与。 原文章同时发布在了本人独立博客:在Winform中播放视频等【DotNet,C#】 在项目中遇到过这样的问题,就是如何在Winform中播放视频。当时考察了几种方式,第一种是直接使用Windows Media Play...

weixin_34391854的博客 1348

.net CallbackOnCollectedDelegate 垃圾回收问题。 (Handle::Invoke”类型的已垃圾回收委托进行了回调。)

错误信息:              对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 最近在写一段程序,一开始运行正常,但执行几次后就抛出错误信息。。插了MSDN, 解决办法是把委托赋值给类的成员; 例如: 原来的委托: public d

jiangxinyu的专栏 1万+

C#处理C++库回调报错_非托管代码传递委托被垃圾回收

检测到 CallbackOnCollectedDelegateMessage: 对“HBVideoParser!Videocomm.Video.HB.HBSDK+SrcDataParseCBHandler::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 ...

weixin_34407348的博客 252

C#向非托管代码传递委托异常

CallbackOnCollectedDelegate”:“对“::Invoke”类型的已垃圾回收委托进行了回调。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。c#调用c++,传递委托参数时,需要将委托先赋值给一个全局变量,然后将这个全局变量传入c++的委托参数上,否则前几次执行正常,垃圾回收后委托被清理掉了,程序退出。托管调试助手 “CallbackOnCollectedDelegate” Message=托管调试助手。

博客 1907

net CallbackOnCollectedDelegate 垃圾回收问题 Handle Invoke 类型的

net CallbackOnCollectedDelegate 垃圾回收问题 Handle Invoke 类型的

ffghggf的博客 1214

c#“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用

症状描述如下: 如果将一个委托作为函数指针从托管代码封送到非托管代码,并且在对该委托进行垃圾回收后对该函数指针发出了一个回调,则将激活 callbackOnCollectedDelegate 托管调试助手 (MDA)。 原因描述如下: 从其创建函数指针并将创建的函数指针公开给非托管代码的委托已被垃圾回收。当非托管组件尝试对该函数指针发出调用时,会产生访问冲突。 一旦将委托作为非托管函数指针...

llljjlj的博客 1538

C#使用回调方式和dll通信时垃圾回收问题

”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。” 最近在写一个dll调用的时候遇见的问题,之前就有遇见过,但是再次遇见的时候竟然不记得之前的解决方法了,这是很不应该的,所以写下来。 最后的解决办法是定义了一个委托类型的成员变量 public static DeleRe...

gunjiu4462的博客 826
上一篇: C#Winform调用EasyDarwin项目中的libEasyPlayer.dll
下一篇: 基于libVlc开发Winform视频播放器
路过&
博客等级 码龄19年 126粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值