Qt 播放Yuv420p视频
环境:
vs2015;Qt5.8;opencv3.4;
从文件读取一帧的数据后从yuv转到rgb,用rgb构造一个IplImage,再把IplImage 转成QImage,显示。
yuv420转rgb:
void YUV420_2_RGB(unsigned char* pYUV, unsigned char* pRGB, int width, int height)
{//找到Y、U、V在内存中的首地址 unsigned char* pY = pYUV;unsigned char* pU = pYUV + height*width;unsigned char* pV = pU + (height*width / 4);unsigned char* pBGR = NULL;unsigned char R = 0;unsigned char G = 0;unsigned char B = 0;unsigned char Y = 0;unsigned char U = 0;unsigned char V = 0;double temp = 0;for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){//找到相应的RGB首地址 pBGR = pRGB + i*width * 3 + j * 3;//取Y、U、V的数据值 Y = *(pY + i*width + j);U = *pU;V = *pV;//yuv转rgb公式 //yuv转rgb公式 temp = Y + ((1.773) * (U - 128));B = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);temp = (Y - (0.344) * (U - 128) - (0.714) * (V - 128));G = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);temp = (Y + (1.403)*(V - 128));R = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);//将转化后的rgb保存在rgb内存中,注意放入的顺序b是最低位 *pBGR = B;*(pBGR + 1) = G;*(pBGR + 2) = R;if (j % 2 != 0){*pU++;*pV++;}}if (i % 2 == 0){pU = pU - width / 2;pV = pV - width / 2;}}
}
IplImage 转成QImage:
QImage *IplImageToQImage(const IplImage *img)
{ QImage *image; cvCvtColor(img,img,CV_BGR2RGB); uchar *imgData=(uchar *)img->imageData; image=new QImage(imgData,img->width,img->height,QImage::Format_RGB888); return image;
}
参考:
IplImage转QImage: https://blog.csdn.net/gfocean/article/details/6440844
yuv420转RGB:https://blog.csdn.net/rookie_wei/article/details/32909871
项目流程参考:https://blog.csdn.net/leixiaohua1020/article/details/50466201
项目下载:
https://download.csdn.net/download/st_spring/10350563
Qt 播放Yuv420p视频相关推荐
- QT播放本地视频和网络视频
首先,需要使用到模块有multimedia 和multimediawidgets, 在QT中.pro文件添加 QT += multimedia multimediawidgets 1.本地视频播放 _ ...
- Qt源码解析-源码解析-QVideoWidget播放手机视频旋转问题
Qt源码解析 索引 Qt源码解析-源码解析-QVideoWidget播放手机视频旋转问题 问题描述与复现 使用手机拍摄的视频是竖屏的,上传后,使用QVideoWidget播放,变成横屏. 总结,可以让 ...
- 【Qt 开源音视频框架模块QtAV】03:QTAV主要接口展示以及播放器源码分享
介绍 QtAV 是一个基于 Qt 和 FFmpeg 的跨平台.高性能多媒体播放框架,能够帮助你轻而易举地编写出一个播放器. [Qt 开源音视频框架模块QtAV]01:介绍.编译以及简单使用 因为网上使 ...
- QT实现播放wmv视频文件QMediaPlayer_QVideoWidget
QT实现播放wmv视频文件QMediaPlayer_QVideoWidget QT实现播放wmv视频文件QMediaPlayer_QVideoWidget.rar-QT文档类资源-CSDN下载QT实现 ...
- 【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)
上一期我们实现了播放.暂停.重播.倍速功能,这期来谈谈如何实现鼠标滚轮放大缩小和移动:如果还没看过上期,请移步 [Qt+FFmpeg]解码播放本地视频(一)_logani的博客-CSDN博客[Qt+F ...
- QT播放视频QMediaPlayer
pro文件添加QT +=multimedia multimediawidgets: UI界面拖拽一个QWidget,右键提升为QVideoWidget: 定义QMediaPlayer对象 QMedia ...
- 【Qt 开源音视频框架模块QtAV】02:QTAV多功能播放器
前言 在[Qt 开源音视频框架模块QtAV]01:介绍.编译以及简单使用中我们已经完成了QTAV的项目部署和简单案例的测试,下面我再分享下QTAV提供的播放器例程. 程序功能效果展示 演示的项目在QT ...
- 解决Qt播放视频无法播放的问题
qt在播放视频时出错: DirectShowPlayerService::doRender: Unresolved error code 80040266 解决:下载解码器 我之前在win7用的解码器 ...
- Qt中嵌入视频并循环播放方法
Qt中插入视频的方法很多,有QVideoPlayer方法,也有用Phonon的,本篇博客就是描述如何在一个QMainwindow界面中,划出一个区域,播放视频,并可以控制视频的切换.停止.暂停.循环, ...
最新文章
- windows server2008R2故障转移群集
- postgresql数据库用户名密码验证失败
- Java并发——线程中断学习
- myeclipse jsp头
- 毕设日志——Fast RCNN
- 分享一些android的资料 很实用
- 华三交换机配置access命令_华3交换机配置命令大全
- 【CocosCreator】单机游戏存档的常用加密解密方法
- python泰坦尼克号数据预测_泰坦尼克号幸存者预测 python 详解
- python版本切换 for Windows(Anaconda) Linux(pyenv)
- Adobe_Acrobat_Pro_DC_2022.003.20314 下载安装
- 视频 | 苏炳添的“冠军卧室”曝光,来看看百米飞人的另一面
- 计算机桌面曝光,win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法...
- python在windows command下打印中文出错 IOError [Errno 22] Invalid argument
- EXCEL描述统计输出详解:标准误、置信度、偏度、峰度和JB检验
- C++读取bmp格式图片
- ZIP炸弹怎样反击扫描器?
- Python 绘制e^x,e^-x,e^x/x,e^-x/x,e-2x/x,e^-3x/x,ln(x)图像
- 拍脑壳所想之 ——戏言面向对象
- 超详细的八大排序算法的各项比较以及各自的特点