RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo

前言

  目标开发任务还有个功能,就是播放rtsp摄像头,当然为了更好的坐这个个,我们必须支持rtsp播放失败之后重新尝试,比如5s重新尝试打开一次,从而保障联网后重新打开,然后达成这个功能。

Demo

  

补充

  得益于方案上的buildroot已经移植了ffmpeg4.1.3。   

摄像头的硬件连接

  

  编译ffmpeg4.1.3   

  程序移植过程中,发现默认的ffmpge缺少了swscale.h,这就很不好办了:   

  想了个打补丁的办法,交叉编译ffmpeg4.1.3给他再打上一次。

步骤一:下载解压

  ffmpeg.org/releases/      解压:   

步骤二:配置configure

  引入交叉编译器   

shell 复制代码
export PATH=$PATH:/home/yang/work/src/topeet-qt5.14.2/topeet-qt5.14.2-aarch64/host/bin

  调整配置,如下:

shell 复制代码
./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

shell 复制代码
make -j4

  

步骤四:安装make install

shell 复制代码
make install

  

步骤五:检查libswsale图像缩放变换模块:

  

  但是编译发现还是不行:   

  忍不了了,重新提取一套完整的直接单独给Qt工程依赖:   注意修改了prefix地址:

shell 复制代码
./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依赖:   

  编译,这回没出现头文件错误,出现了新错误:   

  

  编译通过:   

  编译依赖解决了:   

步骤六:将ffmpeg4.1.2覆盖一遍开发板的ffmpeg

  还得将新库覆盖过去,不然出现如下:   

  因为sftp限制了/root目录下,所以直接打包,到开发板上手动copy覆盖:   

  拷贝到开发板:   

  这里其实不用头文件了,目标板不做编译的话,无需头文件,直接将lib解压后,然后copy文件夹里面的所有到/usr/lib即可,如下图:   

  然后运行:   

  成功了,看界面:   

开始测试软解码rtsp

Ffmpeg拉取rtsp软解h264显示(1080p)

  然后开始软解码rtsp播放:   

  播放1s追加多慢1s,越来越慢,然后灰色了又重新开始:   

  查看cpu,解码1080p直接cpu爆了几个:   

  这个方式行不通。

Ffmpeg拉去rtsp软解h264显示360p(640x360)

  切换至子码流:   

  延迟大概1s-1.5s   

  如下:   

  然后测试了打开了2个解码,延迟基本没影响,然后跑应用解码50ms一阵数据交互,都没啥问题,所以这个能先给演示凑合了。

小结

  本次基本达成目标了,同时也测出rk一类能bsp使用mpp拉取rtsp解码h264包成为rgba直接刷buffer层是延迟最低,最低消耗cpu的方式,也可以给qt显示,多消耗一点延迟,应该是多10~30ms的样子,具体需要测试实际结果。

相关推荐
尘世中一位迷途小书童几秒前
无人机航线里的云台角度怎么调?Cesium 做了个视锥 + 鹰眼联动
前端·javascript·数据可视化
思码梁田4 分钟前
CSS display 属性:从元素类型转换到隐藏元素的实用指南
前端·css·display·inline·block·none·inline-block
Csvn5 分钟前
⚡ Vite 依赖预构建(optimizeDeps)的 3 个经典坑:改了源码不生效、新增依赖 404、缓存怎么清都不行
前端
A242073493016 分钟前
Vue3 + TypeScript:后端数据在表格内渲染后进行增删改的完整实现步骤
前端·javascript·typescript
他们叫我 悦儿遥遥雨19 分钟前
.NET 8 Web开发入门(六):Blazor 全栈开发——告别 JavaScript 焦虑
前端·javascript·.net
用户21816970493026 分钟前
Flutter(九)StatelessWidget StatefullWidget
前端
paopaokaka_luck27 分钟前
基于springboot3+vue3的乡村医生诊疗管理系统(AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析)
前端·网络·人工智能·spring boot·websocket·网络协议·echarts
编程风暴28 分钟前
3类人群的数据分析实习类型选择+4条选错红线
java·前端·数据分析
其美杰布-富贵-李28 分钟前
Vue 3 模块导入教程:import、export 与文件组织
前端·javascript·vue.js
Bigger39 分钟前
堆了 20 套主题、10+ 组件,用户还是用不出来?我给设计 Skill 加了「自动驾驶」
前端·ai编程·视觉设计