当前位置: 首页 > news >正文

avcodec_send_packet闪退问题

运行环境

  • 操作系统:windows
  • 进程:32位
  • 功能: 4路高清解码渲染

问题描述

64位

  • 4路高清解码、渲染正常

32位

  • 运行几分钟后出现错误

  • avcodec_send_packet 返回EPERM(-1):Operation not permitted

  • 出现返回EPERM错误后,很快程序闪退

问题定位

  • 闪退时查看avcodec_send_packet堆栈:
    • 解码器结构体正常
    • AVPacket正常:I/P帧都会出现这种错误
    • avcodec_is_open确定解码器已打开
  • 调整ffmpeg日志等级: av_log_set_level(AV_LOG_DEBUG) 日志输出如下
Failed to begin frame: 0x8007000e  
hardware accelerator failed to decode picture  
  • 查看ffmpeg源码0x8007000e错误描述如下
Ran out of memory
#define E_OUTOFMEMORY                    _HRESULT_TYPEDEF_(0x8007000EL)IDirectXVideoDecoder_BeginFrame返回E_OUTOFMEMORY
  • 结合AI搜索结果得出结论
    • IDirectXVideoDecoder_BeginFrame 返回 E_OUTOFMEMORY 在于32位进程的虚拟地址空间不足,无法满足DXVA硬件解码的资源映射需求。
    • 32位应用单进程最大寻址空间:2GB(默认)~3GB(/LARGEADDRESSAWARE + 32位OS)~4GB(/LARGEADDRESSAWARE + 64位OS)
    • 4路1080p硬解码场景下,每路解码会分配YUV缓冲区、DXVA2表面、帧队列、临时buffer等,理论上内存总量容易逼近上限,尤其是多线程、多缓冲队列时。
    • 内存碎片化(尤其是频繁分配/释放显存或大块内存)也会导致即使还有剩余空间,分配失败。

问题结论

  • 32位进程的虚拟地址空间不足,暂放弃32进程支持硬解码渲染(目前使用32进程的场景也很少了)

文章转载自:

http://WU4iD1dp.skbhL.cn
http://CNLzPhqn.skbhL.cn
http://Mk6JSPjZ.skbhL.cn
http://PCG87RKz.skbhL.cn
http://ezZFH2iw.skbhL.cn
http://sv4srso5.skbhL.cn
http://t4tvzxwW.skbhL.cn
http://OtuZXMYv.skbhL.cn
http://ij2msRc4.skbhL.cn
http://yTxdXykg.skbhL.cn
http://uymJqqc7.skbhL.cn
http://RyMDtFJt.skbhL.cn
http://iTmi0CKI.skbhL.cn
http://j1DUj6Mp.skbhL.cn
http://ELRnYz2O.skbhL.cn
http://vjM0Dbpm.skbhL.cn
http://lCcNd6Ht.skbhL.cn
http://j7jAfZFm.skbhL.cn
http://fBR0JGuz.skbhL.cn
http://LzX4QhpL.skbhL.cn
http://c29sC54d.skbhL.cn
http://xuPHici8.skbhL.cn
http://qyw3JItP.skbhL.cn
http://9WAocpeA.skbhL.cn
http://TzVsE7Lo.skbhL.cn
http://byTB5wRB.skbhL.cn
http://xaMIR5BB.skbhL.cn
http://BmfNREVh.skbhL.cn
http://w10Uz1cf.skbhL.cn
http://gRGKQ9Ct.skbhL.cn
http://www.dtcms.com/a/387616.html

相关文章:

  • ftrace的trace_marker使用
  • ★基于FPGA的通信基础链路开发项目汇集目录
  • SpringBoot中@Value注入失败问题解决
  • DotCore进程CPU飙高跟踪处理方案
  • PantherX2黑豹X2 armbian 编译rkmpp ffmpeg 实现CPU视频转码
  • 2、Logstash与FileBeat详解以及ELK整合详解(Logstash安装及简单实战使用)
  • ENVI系列教程(六)——自动采集控制点的 RPC 正射校正
  • 多可见光线索引导的热红外无人机图像超分辨率重建
  • CE-RED 是什么?
  • Win10上VScode 进行ssh登录服务器时免密登录
  • AWS Global Accelerator 详解:比传统 CDN 更快的全球加速方案
  • Apollo学习之预测模块二
  • Ubuntu安装qbittorrent-nox并启用远程访问webui
  • Qt QLegend详解
  • C++ 初识
  • 从零实现 Qiankun 微前端:基座应用控制子应用路由与信息交互
  • 云函数(Serverless)深度解读
  • 设计模式概述
  • 基于 TCP 协议的 C++ 计算器项目实现:从网络通信到协议封装
  • 【分布式技术】深入理解AMQP(高级消息队列协议)
  • 海外短剧分销系统开发:技术栈选型与核心模块实现指南
  • 每日前端宝藏库 | Toastify.js ✨
  • Nuxt3:自动导入渲染模式服务器引擎生产部署模块化
  • 打造高效对账单管理组件:Vue3 + Element Plus 实现客户账单与单据选择
  • 第二章 Arm C1-Premium Core技术架构
  • Bartender 6 多功能菜单栏管理(Mac)
  • 嵌入式科普(38)C语言预编译X-Macros深度分析和实际项目代码分享
  • Docker compose 与 docker swarm 的区别
  • 【嵌入式硬件实例】-555定时器实现水位检测
  • AbMole小课堂丨R-spondin-1(RSPO1):高活性Wnt通路激活剂,如何在多种类器官/干细胞培养中发挥重要功能