ffmpeg使用qsv解码碰到的问题
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解码碰到的问题相关推荐
- Ubuntu18.04 编译FFmpeg 支持 QSV 硬编解码
在Linux下,由于FFmpeg软解码CPU占用过高,所以打算使用h264_qsv硬解码,本文并非原创,主要参考以下文章,在此记录下编译过程,以便日后使用. 参考文章: 视频和视频帧:FFMPEG+I ...
- ffmpeg硬编解码 Inter QSV
另一篇:ffmpeg硬件编解码Nvidia GPU 硬编解码除了使用Nvidia的GPU之外,Inter的QSV也是一种不错的方案,跟Nvidia不同的是,如果希望使用ffmepg的Inter QSV ...
- Ubuntu18使用FFMPEG实现QSV硬解
前言 由于项目需要,需要在一块I7-8850H上进行H264解码成YUV并显示的功能.由于系统是Ubuntu18,故打算使用QT+FFMPEG来实现.先前的一路软解发现CPU占用率去到了20%以上,我 ...
- FFmpeg 开启QSV硬解加速
简介 QSV 全称:Quick Sync Video Acceleratio ,是Intel媒体开发库(The Intel® Media Software Development Kit)提供了一个对 ...
- FFmpeg之硬解码
导读 前面我们已经使用NDK编译出了FFmpeg并且已经集成到了Android Studio中去,相关文章:NDK21编译ffmpeg5.0.1 众所周知,软解码虽然兼容性一流,但是却非常依赖CPU, ...
- FFmpeg集成qsv的编译安装
文章目录 FFmpeg集成qsv的编译安装 一.参考 二.编译安装流程 1. LibVA 和 Media-Driver 的安装 2. Intel Media SDK 编译 3. ffmpeg的编译安装 ...
- ffmpeg H264 编解码配置
ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) {AVCodec * p ...
- 使用ffmpeg 命令行解码并显示像素格式为.raw图像
使用ffmpeg 命令行解码并显示像素格式为.raw图像,命令如下: ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt bayer_gbrg8 -s 2448* ...
- rk3588 ffmpeg使用硬件解码
rk3588 ffmpeg使用硬件解码 安装ffmpeg最新的静态构建版本 方法1 安装rkmpp 安装264 安装libdrm 下载ffmpeg源码 方法2 ppa搜索需要的软件包 安装支持rkmp ...
最新文章
- 从今天开始,我就要潜心研究软件开发技术了,不在被名利所困
- python timer使用-Python timer定时器两种常用方法解析
- vue2.x的小问题
- ThreadLocal是救火队长
- C程序生成一定范围内的随机数
- YAML/Properties配置文件与Spring Boot(转)
- Vue 计算属性 computed
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
- 浅谈信息安全及解决方案
- mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
- RedHat搭建DHCP服务器
- 如果Linux从未出现,我们的生活会变成怎样?
- Excel导入导出SQL server数据库
- 《玩转股票量化交易》知识星球2021年度回顾
- 【考试】2019.3计算机等级考试所有科目
- Linux一键安装部署环境
- SystemError: could not open configuration file `/etc/libuser.conf': 没有那个文件或目录
- OpenBox:高效通用的黑盒优化系统
- xss靶场挑战之旅总结
- cmd命令窗口无法使用快捷键处理方法
热门文章
- 驻沈阳韩国总领事馆 - 签证结果查询网址
- 软考 信息系统项目管理师考试论文分析和应对技巧
- 百度小程序服务器偶尔一个请求失败,干货分享|百度智能小程序审核发布失败常见原因汇总...
- SpringBoot集成腾讯云对象储存
- jQuery自动完成插件
- ClassLoader类加载浅析
- 【甄选靶场】Vulnhub百个项目渗透——项目七:DerpNStink-1(sql注入,流量分析)
- c if sortable html,Rails 5 - html5sortable - sortable不是HTMLDocument.ready中的函数
- win7系统下samba服务器无法登陆,“Windows7如何解决无法访问NAS或Samba服务器”的解决方案...
- html如何做banner点击按钮下一张,banner.html