完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
飞书20240808-231234demo有提供streamplayer的demo,它使用硬件解码器,考虑它使用的直接显示的方式,计划给它增加一个qt的显示界面,demo中有camera的qt示例,后面考虑次StreamPlayer的图像数据 放到camera的qt示例的qt框中显示,做一个qt的h264播放器。 1.查找streamplayer中的图像输出查看源码发现这个playr释放出来的只有一个cpp文件,如下图 阅读代码发现,demo基于AWStreamPlayer实现,开始没有直接跳转,以为这个实现是在so库中,后vscode查找发现它在当前源码中。 AWStreamPlayer几乎是个纯虚函数,有个静态工厂方法。 目前示例中只有impl这一个类实现 了这个接口,在creat方法 中直接 构造这个子类。 AWStreamplayerimpl继承player,实现所有必要的接口。 在initial()中会创建解码器,以实现 解码。 在test.c中,在创建了player之后 ,会调用startThread startThread中会在完成初始化后,调用StartDecodeThread() 它会创建一个执行VDecordThread的线程 数据解码后使用showPicture_DE的函数显示图片。 查找camerademo中显示图像的接口下面查找qt_camera应用中的图像显示接口,主函数中创建camera,并show,它是这个qt应用的主元件。 class定义中看到了showImage的接口 showimage已被 注释,且看图像类型是RGB888,可能有图像转换的需求 啊,不妙。 重新查找正确的图像显示方式,在StartWorkThread中有看到capture,这是从usb相机接收图片的实例。查找它caputure到的图像去哪儿 了,哪儿 应该就是显示 。 这里发现了格式转换和Qimage的设值。 2.组合qt的h264播放器重新恢复camera模块的showimage接口,看来原来程序员大哥是想把camera传递给capture的,不知为何后来又决定只传递label,不甚严谨。 修改callback实现,将成员变量修改为Camera,这样在callback中就可以 showimage了。 在main函数中创建thread,将解码的线程创建在这里,使用lambda实现解码流程。 qt的编译环境不太熟悉,这里有点奇怪,在sdk_lib中有各个文件,这里提示找不到类的定义,明明在qt editor中都 可以 跳转,编译就是报找不到定义,查找了qt的配置,根本没有找到依赖库的配置位置,不过从生成的makefile中能看到sdk_lib的配置。 调试缺少的so库查找发现在sysroot中,只是没有包含进工程中,可以使用下面的命令添加so库 添加成功后如下图所示,这里除了依赖解码,还依赖了log 编译成功后上板运行打印如下,发现解码器加载时会提示缺少一些插件,不过 不影响 当前的264解码 最后qt中的解码播放器视频放置在开头了,代码放附件中*附件:qt_player.rar |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
[技术] 【飞凌嵌入式OK3576-C开发板体验】llama2.c部署
6015 浏览 0 评论
6775 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】ssh连接与文件传输
6768 浏览 0 评论
8118 浏览 0 评论
【飞凌嵌入式OK527N-C开发板体验】6.制作h264播放器
7538 浏览 0 评论
6764浏览 2评论
3222浏览 2评论
11089浏览 1评论
5176浏览 1评论
83554浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 16:31 , Processed in 0.451220 second(s), Total 40, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号