UE的rtsp插件崩溃过程排查

2023-11-05

Part1前言

Invideo插件是一个UE5的rtsp视频播放插件,当然还可以播放主流的其他视频协议。其开源地址如下https://github.com/inveta/InVideo

3a8d1d5afff8edfc81e309f5648db67f.png

前段时间有网页反馈使用该插件进行播放视频的时候会有偶发程序崩溃。

53013bf9580fdbbeb946bed0e1040212.png

Part2问题排查

当看到留言之后,其实并没有什么排查思路。后续这位网友有加了我们qq技术交流群:681464378
给出了更加详细的信息描述。

a5cee981455095cb089735e6295cb8d6.jpeg

并且强调在大分辨率的情况下,崩溃的概率会高很多。而且主要集中在视频打开和关闭的时候。

接下来找到虚幻的源码发现崩溃在第一个checkf里面。这里校验了传入参数UpdataRegion。

60492c8c6d11e2ac9d53b2d701f0f5f4.jpeg

UpdataRegion这个参数类型是FUpdateTextureRegion2D,通过查看代码,发现是我们自己传入的。在UInVideoWidget::UpdateTextureRegions函数中调用ENQUEUE_RENDER_COMMAND传入到的渲染线程。
而传入的对象的值通过下面方法创建

m_VideoUpdateTextureRegion = new FUpdateTextureRegion2D(0, 0, 0, 0, m_VideoSize.X, m_VideoSize.Y);

通过比较我们创建时候的值和崩溃时候的值,我们发现明明我们初始化的值是0,但是在崩溃的时候,编程了一个非常大的值:-1861933592。这只能说明我们传入的对象被释放了,但是渲染线程还在使用。

我们释放的情况只有在执行视频关闭的时候,才会进行。相关代码在void UInVideoWidget::StopPlay()中进行。释放方法如下

if (nullptr != m_VideoUpdateTextureRegion) 
 { 
 delete m_VideoUpdateTextureRegion; 
 m_VideoUpdateTextureRegion = nullptr; 
 }

那么为什么我们把视频释放了,渲染线程还会继续渲染呢?
这是一个多线程问题,因为分辨率设置过大,导致gpu显卡性能下降,然后这个bug就出来了。在视频释放之后,渲染队列之前的任务还没有执行完成,之后就会使用已经释放的指针。分辨率低的时候,渲染线程性能好,不会有延迟,所以就不会出现。
后续修改程序将每次传递这个值从新new一个出来RegionData->Regions = new FUpdateTextureRegion2D(*Regions);再然后介绍之后再进行释放delete RegionData->Regions;

Part3后续反馈

按照这个思路修改之后,目前没有收到崩溃的问题。

b1e535deedbeb096b7398b7cf680b5cf.png

所以后续推荐使用V1.4版本 https://github.com/inveta/InVideo/releases/tag/V1.4

Part4总结

本文针对InVideo播放rtsp视频崩溃的bug进行了复盘并进行了修复。

206752105c81257f78e6f766de1af75c.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE的rtsp插件崩溃过程排查 的相关文章

  • 如何解决x盘莫名出现的msdia80.dll文件

    如何解决x盘莫名出现的msdia80 dll文件 参考文章 https zhuanlan zhihu com p 138954717
  • 想用好虚幻4引擎做游戏,你需要避免这些扰人的坑(备忘)

    在手游品质越发上扬的如今 已经有不少厂商开始使用一些性能更好的引擎 去尝试游戏制作了 而虚幻4引擎 以下简称UE4 就是其中之一 在这款引擎中已经诞生了诸如 铁拳7 地狱之刃 帕拉贡 等一系列大作 对玩家而言 这些作品都是不折不扣的视觉盛宴
  • UE4 导航网格的使用

    在使用导航网格前 应先设置项目导航系统支持的导航代理者 Agents 在项目设置中 找到导航系统页面 DirtyAreasUpdateFreq 表示导航网格变化时 检测变化并更新的频率 这里可以设置导航系统的一些参数 包括是否允许客户端导航
  • UE4学习日记——蓝图中的各种颜色代表什么

    节点类型颜色 白色 执行线 蓝色 调用的函数或事件 暗蓝色 结构体 草绿色 流程切换 绿色 纯函数 通常用于获取什么 青色 试着对象转换 紫色 函数定义 灰色 宏 红色 事件的定义 土黄色 时间轴 数据类型颜色 白色线条 执行线 程序的执行
  • UE 材质学习

    值材质三原素 材质 材料 肌理 纹络 or 纹理 图案 Material Texture Pattern UE5中对应材质的 三原素 的内容 材质 Metallic 金属感 Roughness 粗糙度 Specular 高光 镜面 肌理 N
  • UE4_Python编写,Pycharm智能提示API

    1 按照教程配置环境 在对应的目录下会有一个unreal py 的文件 把它粘贴到对应的Python的项目目录 2 因为Pycharm 的py 文件 默认支持的智能提示是 the file size 10 5mb exceeds confi
  • 专题详解-5G接入控制(1)

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 最近工作中遇到了一些5G专网接入限制的问题 以前没仔细研究 借着解决这
  • ue4中Pak文件中挂载的资源名称获取

    在pak文件中 会挂接很多资源 api也在变化 废话不多说 上代码 FPakPlatformFile GetPakPlatformFile FPakPlatformFile pakPlatformFile nullptr auto plat
  • UE4-蓝图函数库

    UE4 蓝图函数库 概述 蓝图函数库 Blueprint Function Library 是一个静态函数的合集 提供不与特定游戏性对象绑定的效用功能 即不用绑定到对象身上 再到蓝图中进行调用 可以非常方便的将代码中的函数暴露给所有蓝图使用
  • ue中的经纬高转xyz的问题

    在ue中 做了个地球仪 发现经纬度转地心坐标系老是出问题 后来发现 是转ue时 x y坐标要互换 也对 因为在cesium for unreal中还有一系列ecef转ue的相关函数 即下面的代码中 xy需要互换 在ue中才能正常使用 偏心率
  • 【UE4】复杂背景人像抠图-飞浆AI-paddlepaddle深度训练模型

    前言 运用到Python3 7 UEC 蓝图 实现复杂背景人物使用PaddleHub深度训练模型进行抠像后在UE中使用 纯色背景人物仅材质就可实现 使用到的训练模型 deeplabv3p xception65 humanseg 1 准备工作
  • 11月8日 改良射线,蓝图 UE4斯坦福 学习笔记

    修改射线类型 更改了昨天的射线类型 void USInteractionComponent PrimaryInteract 射线 FHitResult FHit 碰撞体 FCollisionObjectQueryParams ObjectQ
  • UE44如何使用Geometry(BSP)笔刷,快速创建游戏原型?

    游戏原型搭建 如何快速搭建场景 一 好处1 防止同时也放大了对应的网格 如果像unity里面一样 R放大缩小以后 网格也会对应拉伸 失真 导致了材质会被拉伸或者缩小 1 选择Geometry 在BrushSetting里面 将X Y Z对应
  • 【UE4】DataTable - 数据表

    本文使用 UE 4 26 引擎自带 ARPG 项目 从代码和编辑器两个方面记录一下 UE4 中的 DataTable 也就是数据表的用法 一 DataTable 是什么 DataTable 就是数据表 以下简称 DT 也就是二维的 M 行
  • [UE5蓝图基础一]13.类似”人类一败涂地”掉落一定距离会回到空中 最终着落点还是设定地形上

    利用合体触发器Box Conllision 目标点 在放置actor里 实现 修改盒体范围为2W 当人物与盒子重叠就瞬移到空中
  • UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 遇到的问题 二 操作步骤 前言 UE4 Unreal Engine4 在蒙太奇动画中添加音频轨道通知 我们想在某一帧动画中添加声音 比如我们想在动画的第13帧这里添加音效 一 遇到
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • UE4文字显示乱码“字字字字字字字字”的解决办法

    键盘win R 搜索fonts 2 滑到最底下右键复制 宋体常规简体字 3 复制到ue4项目的字体文件夹中 如下 注意在外部文件处复制 4 回到项目界面 此时右下角会有个弹窗提示是否确认导入 点击导入 然后会弹一个 字体样式导入选项 弹框
  • 【UE5】初识MetaHuman 创建虚拟角色

    步骤 在UE5工程中启用 Quixel Bridge 插件 打开 Quixel Bridge 点击 MetaHumans MetaHuman Presets UE5 点击 START MHC 在弹出的网页中选择一个虚幻引擎版本 然后点击 启
  • 【UE】在控件蓝图中通过时间轴控制材质参数变化

    效果 步骤 1 新建一个控件蓝图和一个材质 2 打开材质 设置材质域为用户界面 混合模式设置为 半透明 在材质图表中添加两个参数来控制材质的颜色和不透明度 3 对材质创建材质实例 4 打开控件蓝图 在画布面板中添加一个图像控件 将刚才创建的

随机推荐

  • 【Unity】ScriptableObject的介绍

    Unity ScriptableObject的介绍 看了下ScriptableObject的一些介绍 最大的优势感受有三点 json 把数据真正存储在了资源文件中 能够像其余资源那样管理它 例如退出运行也同样会保持修改 能够在项目之间很好的
  • 爬虫框架Scrapy(12)爬取动态页面

    文章目录 爬取动态页面 一 Splash 渲染引擎 1 render html 端点 2 execute 端点 3 常用属性与方法 1 Splash 对象的属性 2 Splash 对象的方法 二 安装 Scrapy Scrapy 1 安装
  • Java集合框架及基本接口

    文章目录 Collection接口及迭代器 泛型方法的使用 集合基本接口和实现 List ArrayList LinkedList ListIterator接口和Iterable接口的区别 Set HashSet TreeSet Queue
  • 统计字符串中整数个数

    输入一个字符串 内有数字和非数字字符 例如 jh2515da555adad22 dsd55252aa 将其中连续数字作为一个整数 依次存放在 一组数a中 例如 2515放在a 0 555放在a 1 统计有多少个整数 并输出这些数 inclu
  • Python中的物体检测算法有哪些?

    人工智能技术在不断发展 物体检测技术在计算机领域也变得越来越重要 提到人工智能 一定少不了Python Python语言的应用范围也逐渐广泛 那么你知道Python物体检测技术是什么吗 以下是详细的内容 什么是物体检测技术 物体检测技术 顾
  • Android——recyclerview.adapter公共方法、类、接口的作用简述

    功能分类 公共内部接口 使用场景 数据绑定 onCreateViewHolder ViewGroup parent int viewType onBindViewHolder VH holder int position getItemCo
  • 排序——冒泡排序(Bubble sort)

    定义 冒泡排序是一种较简单的排序算法 它重复地走访过要排序的元素列 依次比较两个相邻的元素 如果顺序 如从大到小 首字母从Z到A 错误就把他们交换过来 走访元素的工作是重复地进行直到没有相邻元素需要交换 也就是说该元素列已经排序完成 这个算
  • 黑客/网络安全【零基础自学】

    一 为什么选择网络安全 这几年随着我国 国家网络空间安全战略 网络安全法 网络安全等级保护2 0 等一系列政策 法规 标准的持续落地 网络安全行业地位 薪资随之水涨船高 未来3 5年 是安全行业的黄金发展期 提前踏入行业 能享受行业发展红利
  • 如何建设一个安全运营中心(SOC)?

    然信息安全管理问题主要是个从上而下的问题 不能指望通过某一种工具来解决 但良好的安全技术基础架构能有效的推动和保障信息安全管理 随着国内行业IT应用度和信息安全管理水平的不断提高 企业对于安全管理的配套设施如安全运营中心 SOC 的要求也将
  • wifi协议_图解 802.11wifi协议

    微信公众号 卢同学关注可了解更多 若有问题或建议 请与本人联系或者公众号留言 如果你觉得此文对你有帮助 欢迎赞赏 目录 凡事若能综观形势 通常有助于细节的进一步探究 从OSI七层模型来看 802规范的重心放在OSI模型最下面的两层 即数据链
  • Python爬虫入门7:HTML报文解析获取网页基本信息

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 BeautifulSoup是三方模块bs4中提供的进行HTML解析的类 可以认为是一个HTML解析工具箱 对HTML报文中的标签具有比较
  • wrieshark 抓包图解 MSDU AMSDU MPDU AMPDU 的区别

    区分这几种帧格式明确 802 3 和 802 11 两种帧格式即可 MSDU 首先 MSDU 是802 3的帧格式 从以太口发出去的帧都是MSDU格式的 A MSDU AMSDU 是把几个MSDU 聚合在一起并从以太网口发出去的帧 MPDU
  • 性能测试流程

    目 录 一 文档介绍 3 1 1文档目的 3 1 2适用对象 3 二 性能测试简介 3 2 1 性能测试概念 3 2 2 常用性能指标 4 2 3常用性能测试工具 5 三 性能测试流程 6 3 1 性能测试流程图 6 3 2 性能测试流程详
  • APScheduler 源码阅读(二) job

    趁热打铁 学习一下 APScheduler 的 python 的源码 很好奇任务调度控制的实现 分析源码主要还是针对 APScheduler 下的几个关键的模块 events 事件 executors 执行器 job 任务 jobstore
  • libcaffe Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Input (known types: )

    在用libcaffe lib建立工程时 出现 Check failed registry count type 1 0 vs 1 Unknown layer type Input known types 错误 参考了两篇博文解决问题 主要思
  • warning: ignoring JAVA_HOME=D:\JDK; using bundled JDK报错解决

    warning ignoring JAVA HOME D JDK using bundled JDK报错原因是因为你JDK版本太低或者你的ElasticSearch版本太高降低版本即可 我的是JDK1 8我下载的是elasticsearch
  • 八皇后问题--回溯

    在刘汝佳老师的书中对于8皇后问题的分析 我感觉非常经典 8皇后问题可行的解 92个 回溯的定义 当把问题分解成若干的步骤并递归的求解时候 如果当前步骤没有合法的选择 则函数将返回上一级递归调用 这种现象称为回溯 这是这个原因 递归枚举算法常
  • uniapp 保存二维码到本地,如果不是本地图片需要先下载后保存。

    如果二维码不是固定的 是线上的就需要先去下载 baocuns 保存二维码 let that this uni showLoading title 保存中 uni downloadFile 先下载网络图片 转为临时路径图片 url that
  • 进制转换C语言实现(十进制转换为任意进制)

    程序实现功能 输入一个十进制数和R 表示要转换成R进制 输出转换后的数 事例 例如 输入 10 2 输出 1010 源代码如下 include
  • UE的rtsp插件崩溃过程排查

    Part1前言 Invideo插件是一个UE5的rtsp视频播放插件 当然还可以播放主流的其他视频协议 其开源地址如下https github com inveta InVideo 前段时间有网页反馈使用该插件进行播放视频的时候会有偶发程序