RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo
前言
目标开发任务还有个功能,就是播放rtsp摄像头,当然为了更好的坐这个个,我们必须支持rtsp播放失败之后重新尝试,比如5s重新尝试打开一次,从而保障联网后重新打开,然后达成这个功能。
得益于方案上的buildroot已经移植了ffmpeg4.1.3。
编译ffmpeg4.1.3
程序移植过程中,发现默认的ffmpge缺少了swscale.h,这就很不好办了:
想了个打补丁的办法,交叉编译ffmpeg4.1.3给他再打上一次。
引入交叉编译器
export PATH=$PATH:/home/yang/work/src/topeet-qt5.14.2/topeet-qt5.14.2-aarch64/host/bin
调整配置,如下:
./configure --prefix=/home/yang/work/src/topeet-qt5.14.2/topeet-qt5.14.2-aarch64/host/aarch64-buildroot-linux-gnu/sysroot --arch=aarch64 --target-os=linux --enable-cross-compile --cross-prefix=aarch64-buildroot-linux-gnu- --enable-shared
make -j4
make install
但是编译发现还是不行:
忍不了了,重新提取一套完整的直接单独给Qt工程依赖:
注意修改了prefix地址:
./configure --prefix=/home/yang/work/src/ffmpeg-aarch64 --arch=aarch64 --target-os=linux --enable-cross-compile --cross-prefix=aarch64-buildroot-linux-gnu- --enable-shared
重走一遍,单独弄到ffmpeg代码里面去:
弄到代码模块里面:
添加pri依赖:
编译,这回没出现头文件错误,出现了新错误:
编译通过:
编译依赖解决了:
还得将新库覆盖过去,不然出现如下:
因为sftp限制了/root目录下,所以直接打包,到开发板上手动copy覆盖:
拷贝到开发板:
这里其实不用头文件了,目标板不做编译的话,无需头文件,直接将lib解压后,然后copy文件夹里面的所有到/usr/lib即可,如下图:
然后运行:
成功了,看界面:
然后开始软解码rtsp播放:
播放1s追加多慢1s,越来越慢,然后灰色了又重新开始:
查看cpu,解码1080p直接cpu爆了几个:
这个方式行不通。
切换至子码流:
延迟大概1s-1.5s
如下:
然后测试了打开了2个解码,延迟基本没影响,然后跑应用解码50ms一阵数据交互,都没啥问题,所以这个能先给演示凑合了。
本次基本达成目标了,同时也测出rk一类能bsp使用mpp拉取rtsp解码h264包成为rgba直接刷buffer层是延迟最低,最低消耗cpu的方式,也可以给qt显示,多消耗一点延迟,应该是多10~30ms的样子,具体需要测试实际结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?