ffmpeg使用qsv硬解码出来的视频帧格式是AV_PIX_FMT_NV12格式的

//ffmpeg使用qsv硬解码出来的视频帧格式是AV_PIX_FMT_NV12格式的,
//在调用sws_getContext函数时第三个参数必须强制传入AV_PIX_FMT_NV12,
//否则会导致视频数据转换rgb时失败
if (bUseGPUDecoder)
{m_img_convert_ctx = sws_getContext(w, h, AV_PIX_FMT_NV12,w, h, AV_PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
}
else
{m_img_convert_ctx = sws_getContext(w, h, m_pVideoCodecCtx->pix_fmt,w, h, AV_PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
}

使用hevc_qsv解码器,解码数据是组成完整一帧H265,然后直接发给解码器,报错
Error during QSV decoding.: unknown error (-1)。代码如下

pkt->data = ptr; //ptr是h265裸流,且是完整一帧
pkt->size = ptr_size;
nRet = avcodec_send_packet(m_pDecodeCtx,pkt);
int  nRet =avcodec_receive_frame(m_pDecodeCtx, frame);

这个办法用在h264_qsv,h264_cuvid,hevc_cuvid都没问题,就独独在hevc_qsv这里报错崩溃。
推测问题出在ffmepg线程和自己解码线程速度匹配上有问题(帧率是25帧,但是avcodec_send_packet的时候每24帧就出现一个I帧,有一帧丢掉了)
解决办法:使用avio_alloc_context的回调函数给ffmpeg喂数据

ffmpeg使用qsv解码碰到的问题相关推荐

  1. Ubuntu18.04 编译FFmpeg 支持 QSV 硬编解码

    在Linux下,由于FFmpeg软解码CPU占用过高,所以打算使用h264_qsv硬解码,本文并非原创,主要参考以下文章,在此记录下编译过程,以便日后使用. 参考文章: 视频和视频帧:FFMPEG+I ...

  2. ffmpeg硬编解码 Inter QSV

    另一篇:ffmpeg硬件编解码Nvidia GPU 硬编解码除了使用Nvidia的GPU之外,Inter的QSV也是一种不错的方案,跟Nvidia不同的是,如果希望使用ffmepg的Inter QSV ...

  3. Ubuntu18使用FFMPEG实现QSV硬解

    前言 由于项目需要,需要在一块I7-8850H上进行H264解码成YUV并显示的功能.由于系统是Ubuntu18,故打算使用QT+FFMPEG来实现.先前的一路软解发现CPU占用率去到了20%以上,我 ...

  4. FFmpeg 开启QSV硬解加速

    简介 QSV 全称:Quick Sync Video Acceleratio ,是Intel媒体开发库(The Intel® Media Software Development Kit)提供了一个对 ...

  5. FFmpeg之硬解码

    导读 前面我们已经使用NDK编译出了FFmpeg并且已经集成到了Android Studio中去,相关文章:NDK21编译ffmpeg5.0.1 众所周知,软解码虽然兼容性一流,但是却非常依赖CPU, ...

  6. FFmpeg集成qsv的编译安装

    文章目录 FFmpeg集成qsv的编译安装 一.参考 二.编译安装流程 1. LibVA 和 Media-Driver 的安装 2. Intel Media SDK 编译 3. ffmpeg的编译安装 ...

  7. ffmpeg H264 编解码配置

    ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) {AVCodec * p ...

  8. 使用ffmpeg 命令行解码并显示像素格式为.raw图像

    使用ffmpeg 命令行解码并显示像素格式为.raw图像,命令如下: ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt bayer_gbrg8 -s 2448* ...

  9. rk3588 ffmpeg使用硬件解码

    rk3588 ffmpeg使用硬件解码 安装ffmpeg最新的静态构建版本 方法1 安装rkmpp 安装264 安装libdrm 下载ffmpeg源码 方法2 ppa搜索需要的软件包 安装支持rkmp ...

最新文章

  1. 从今天开始,我就要潜心研究软件开发技术了,不在被名利所困
  2. python timer使用-Python timer定时器两种常用方法解析
  3. vue2.x的小问题
  4. ThreadLocal是救火队长
  5. C程序生成一定范围内的随机数
  6. YAML/Properties配置文件与Spring Boot(转)
  7. Vue 计算属性 computed
  8. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
  9. 浅谈信息安全及解决方案
  10. mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
  11. RedHat搭建DHCP服务器
  12. 如果Linux从未出现,我们的生活会变成怎样?
  13. Excel导入导出SQL server数据库
  14. 《玩转股票量化交易》知识星球2021年度回顾
  15. 【考试】2019.3计算机等级考试所有科目
  16. Linux一键安装部署环境
  17. SystemError: could not open configuration file `/etc/libuser.conf': 没有那个文件或目录
  18. OpenBox:高效通用的黑盒优化系统
  19. xss靶场挑战之旅总结
  20. cmd命令窗口无法使用快捷键处理方法

热门文章

  1. 驻沈阳韩国总领事馆 - 签证结果查询网址
  2. 软考 信息系统项目管理师考试论文分析和应对技巧
  3. 百度小程序服务器偶尔一个请求失败,干货分享|百度智能小程序审核发布失败常见原因汇总...
  4. SpringBoot集成腾讯云对象储存
  5. jQuery自动完成插件
  6. ClassLoader类加载浅析
  7. 【甄选靶场】Vulnhub百个项目渗透——项目七:DerpNStink-1(sql注入,流量分析)
  8. c if sortable html,Rails 5 - html5sortable - sortable不是HTMLDocument.ready中的函数
  9. win7系统下samba服务器无法登陆,“Windows7如何解决无法访问NAS或Samba服务器”的解决方案...
  10. html如何做banner点击按钮下一张,banner.html