Qt中使用vlc-qt处理音视频需要下载vlc-qt或者自己编译 (linux配置vlc-qt)。播放本地视频或者连接网络摄像头感觉都挺流畅,画面质量很不错。此外看到vlc-qt可以实现一个窗口内多个控件显示视频的功能,非常厉害(这个我没有试过,不知道效果如何)。
(那几天用opencv读视频和QtAV,vlc-qt我都尝试过,感觉vlc-qt性能最佳,并且非常容易使用)。
效果如下,这里我是获取视频,抽帧之后转RGB图,在上面画了一个绿框:
(资料图片仅供参考)
这个代码我放到了github,可以了解一下。 https://github.com/Whu-wxy/Qt-VLC-Demo
这两天用了一点点vlc-qt,简要记录一下:
处理视频时需要的几个类:
VlcInstance,VlcMedia(连接视频),VlcMediaPlayer(控制播放)
VlcVideoStream(视频抽帧)
VlcWidgetVideo(显示视频的控件)
帮助文档(写的比较简略):
https://vlc-qt.tano.si/reference/ vlc-qt github源码: https://github.com/vlc-qt/vlc-qt视频抽帧:
从VlcVideoStream派生一个类,比如ZNDKVideoStream,实现virtual void frameUpdated(),但是发现控件VlcWidgetVideo上就不显示了,我理解的是图片被VlcVideoStream截获,因此不能在VlcWidgetVideo显示。获得的图是YUV格式的,需要转换为RGB才可以方便自定义的图片处理。
这里找到一段YUV转cv::Mat的代码,得到Mat图片后我们进一步可以转为RGB。https://github.com/vlc-qt/vlc-qt/issues/230 。网上有些资料说用公式转换的效果不好,还有说可以用OpenGL转,以后有空可以尝试,这样就可以完全不依赖于opencv了。
void ZNDKVideoStream::frameUpdated(){//获得帧std::shared_ptrpFrame = std::dynamic_pointer_cast(renderFrame());if (!pFrame) {return; //LCOV_EXCL_LINE}//YUV图转Mat,再转QImageint rows = pFrame->height + pFrame->height / 2;int cols = pFrame->width;int matType = CV_8UC1 ;cv::Mat myuv(rows,cols,matType,(void*)pFrame->frameBuffer.data());cv::Mat mrgb(pFrame->height, pFrame->width, CV_8UC3);cv::cvtColor(myuv, mrgb, CV_YUV2RGB_I420);QImage img((const unsigned char *)(mrgb.data), mrgb.cols, mrgb.rows, mrgb.cols * 3, QImage::Format_RGB888);img.rgbSwapped();} 在这里图片可以选择用信号发出去:
emit sendImage(img);视频缓存:
https://github.com/vlc-qt/vlc-qt/issues/201 设置(也就是VlcMedia) media->setOption(\":network-caching=100\")
然鹅好像有点问题。
运行时报错:
core libvlc error: No plugins found! Check your VLC installation.VLC-Qt Error: libvlc failed to load!解决:
sudo apt-get install libvlc-devsudo apt-get install vlc【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】
点击这里:
上一篇:【全球快播报】漫评美国借乌克兰危机坐收渔利:“要美元不要和平”
下一篇:最后一页
6月18日晚,从河南银保监局获悉,针对近期个别村镇银行线上服务渠道关闭问题,河南银保监局、河南省地方金融监管局有关负责人表示,各级金
近日,我省天气持续高温。6月19日,根据省委、省政府安排,省政府办公厅下发《关于加强高温天气防范应对工作的通知》(以下简称《通知》)
据河南发布,6月17日,河南省公布《河南省高效统筹疫情防控和经济社会发展工作方案》《河南省四保企业(项目)疫情防控工作指南》《河南省
6月15日,省政府与国家矿山安全监察局在洛阳联合举办尾矿库头顶库溃坝风险应急处置演练。副省长武国定,应急管理部副部长、国家矿山安监局
6月15日,省委书记楼阳生在商丘美兰生物工程有限公司调研科技创新、项目研发、人才引进等情况。记者 董亮 蔡迅翔 摄6月15日至16日,省委
X 关闭
X 关闭
6月30日,省委书记楼阳生到河南省视博电子股份有限公司调研平台建设、服务项目、技术研发等情况。(记者 董亮 蔡迅翔 摄)6月30日,省委[+更多]
6月30日上午,河南省文物考古研究院新院项目开工仪式在郑州举行。国家文物局副局长关强、副省长何金平出席开工仪式,并共同为项目奠基。河[+更多]
免费的也许是最贵的。接到免费茶艺培训,到店就送精美礼品的卡片,近日,有好奇心的老年人走进了郑州某某斋生活艺术馆。馆内,古玩、字画、[+更多]
6月30日,省文旅文创融合战略工作专班会议在郑州召开,深入学习贯彻习近平总书记在中共中央政治局第三十九次集体学习时的重要讲话精神,学[+更多]