这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 制作h264播放器--OK527N-C

共4条 1/1 1 跳转至

制作h264播放器--OK527N-C

工程师
2025-02-05 13:21:41     打赏

demo有提供streamplayer的demo,它使用硬件解码器,考虑它使用的直接显示的方式,计划给它增加一个qt的显示界面,demo中有camera的qt示例,后面考虑次StreamPlayer的图像数据 放到camera的qt示例的qt框中显示,做一个qt的h264播放器。

1.查找streamplayer中的图像输出

查看源码发现这个playr释放出来的只有一个cpp文件,如下图

image.png

阅读代码发现,demo基于AWStreamPlayer实现,开始没有直接跳转,以为这个实现是在so库中,后vscode查找发现它在当前源码中。
image.png

AWStreamPlayer几乎是个纯虚函数,有个静态工厂方法。
image.png

目前示例中只有impl这一个类实现 了这个接口,在creat方法 中直接 构造这个子类。
image.png

AWStreamplayerimpl继承player,实现所有必要的接口。
image.png

在initial()中会创建解码器,以实现 解码。
image.png

在test.c中,在创建了player之后 ,会调用startThread
image.png

startThread中会在完成初始化后,调用StartDecodeThread()

image.png

它会创建一个执行VDecordThread的线程
image.png

数据解码后使用showPicture_DE的函数显示图片。

image.png

查找camerademo中显示图像的接口

下面查找qt_camera应用中的图像显示接口,主函数中创建camera,并show,它是这个qt应用的主元件。

image.png

class定义中看到了showImage的接口

image.png

showimage已被 注释,且看图像类型是RGB888,可能有图像转换的需求 啊,不妙。

image.png

重新查找正确的图像显示方式,在StartWorkThread中有看到capture,这是从usb相机接收图片的实例。查找它caputure到的图像去哪儿 了,哪儿 应该就是显示 。
image.png

这里发现了格式转换和Qimage的设值。

image.png

2.组合qt的h264播放器

重新恢复camera模块的showimage接口,看来原来程序员大哥是想把camera传递给capture的,不知为何后来又决定只传递label,不甚严谨。

修改callback实现,将成员变量修改为Camera,这样在callback中就可以 showimage了。
image.png

在main函数中创建thread,将解码的线程创建在这里,使用lambda实现解码流程。

image.png

qt的编译环境不太熟悉,这里有点奇怪,在sdk_lib中有各个文件,这里提示找不到类的定义,明明在qt editor中都 可以 跳转,编译就是报找不到定义,查找了qt的配置,根本没有找到依赖库的配置位置,不过从生成的makefile中能看到sdk_lib的配置。

image.png

调试

缺少的so库查找发现在sysroot中,只是没有包含进工程中,可以使用下面的命令添加so库
image.png

添加成功后如下图所示,这里除了依赖解码,还依赖了log
image.png

编译成功后上板运行打印如下,发现解码器加载时会提示缺少一些插件,不过 不影响 当前的264解码
image.png






关键词: 播放器     OK527N-C    

院士
2025-02-05 15:10:44     打赏
2楼

谢谢分享。


专家
2025-02-05 21:57:21     打赏
3楼

谢谢楼主分享


专家
2025-02-06 10:00:53     打赏
4楼

谢谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]