RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo
前言
目标开发任务还有个功能,就是播放rtsp摄像头,当然为了更好的坐这个个,我们必须支持rtsp播放失败之后重新尝试,比如5s重新尝试打开一次,从而保障联网后重新打开,然后达成这个功能。
Demo

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

摄像头的硬件连接

编译ffmpeg4.1.3

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

想了个打补丁的办法,交叉编译ffmpeg4.1.3给他再打上一次。
步骤一:下载解压
步骤二:配置configure
引入交叉编译器

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
make -j4

步骤四:安装make install
make install

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

但是编译发现还是不行:

忍不了了,重新提取一套完整的直接单独给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依赖:

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


编译通过:

编译依赖解决了:

步骤六:将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的样子,具体需要测试实际结果。
RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo的更多相关文章
- 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484长期持续带来更多项目与技术分享, ...
- Delphi For Android 开发笔记 1 - 开发工具介绍
在开始前,推荐喜欢delphi或者pascal的朋友,如果想将原来Windows的软件工程移植到Android,可使用CodeTyphon+Delphi XE7进行开发. 1.CodeTyphon C ...
- 地图开发笔记(一):百度地图介绍、使用和Qt内嵌地图Demo
前言 Qt在地图方面的研发. 百度地图 介绍 百度的地图分为多个开发,都是在线的(离线的需要自己提取,本篇解说在线地图). 百度地图JavaScript API支持HTTP和HTTPS, ...
- wp8开发笔记之开发环境的搭建
开发工具的下载: Windows phone sdk 8.0下载地址: http://www.microsoft.com/ZH-CN/download/details.aspx?id=35471 开发 ...
- nrf开发笔记一开发软件
nrf52810 的开发环境,比较主流的可以使用keil,iar亦可.sdk中,使用的是pca10040e,s112.虽然开发板共用一个型号(pca10040) keil5中,cmsis 需要4.5. ...
- 张高兴的 UWP 开发笔记:用 Thumb 控件仿制一个可拖动 Button
在 WPF 上可用的控件拖动方法在 UWP 上大多没用,那干脆用 Thumb 仿制一个吧. 关于 Thumb 控件的教程也不多,毕竟在 WPF 控件拖动有很多种方法, Thumb 就显得很鸡肋了.下面 ...
- odoo开发笔记 -- 日常开发注意点总结(持续补充)
(1) odoo视图字段,如果是readonly,默认该数据是不会往后台传递的,因此,保存数据的时候,该字段的数据是不会存到数据库中的.(待确认,字段中增加默认值,保存) (2)视图界面,注释的时候, ...
- vue全家桶+Koa2开发笔记(8)--开发网页
1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...
- odoo开发笔记 -- 日常开发注意点小节
onchange depends区别 视图字段增加readonly属性
- odoo开发笔记 -- 前端开发相关
https://www.cnblogs.com/lyzg/p/5634565.html http://dmyz.org/archives/598 https://www.jianshu.com/p/6 ...
随机推荐
- ELK日志收集记录
logstash在需要收集日志的服务器里运行,将日志数据发送给es 在kibana页面查看es的数据 es和kibana安装: Install Elasticsearch with RPM | Ela ...
- kafka学习笔记03消息队列的两种模式
①点对点模式 该种模式就是消费者会自动消费消息,消息收到之后会向消息队列进行确认收到消息,然后将该数据进行删除. ②发布/订阅模式 可以有多个的topic,topic在英语中有主题的意思, ...
- [随笔]记一此更新win10后mysql服务消失的问题
十几天前系统自动更新 没在意 几天前用php连mysql的时候 报错 Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] 由于目标计算 ...
- DevOps|从腾讯TEG CDC解散聊技术中台价值和建设
近日一则腾讯TEG CDC整个部门解散的消息在很多群里炸了锅,有的唱衰互联网行业,有的唉声叹气,还有的甩锅到 AGI 的发展.总体上来说,这个事情的确已经发生了,我想从组织架构和整体效能这两方面来分析 ...
- RabbitMQ基本配置
1.用户角色配置 自带的guest/guest 超级管理员五中不同角色配置: 普通管理者(management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理. 策略制定者(policy ...
- 高效运营新纪元:智能化华为云Astro低代码重塑组装式交付
摘要:程序员不再需要盲目编码,填补单调乏味的任务空白,他们可以专注于设计和创新:企业不必困惑于复杂的开发过程,可以更好地满足客户需求以及业务策略迭代. 本文分享自华为云社区<高效运营新纪元:智能 ...
- ISP图像处理—紫边Purple Fringing
图像紫边存在数码相机.监控摄像头等数字成像图像,使用设备在逆光.大光圈条件下拍摄图像的高反差区域容易出现紫边,解决图像自编问题有助设备得到完美图像. 紫边成因分析和确定有助与紫边消除的图像处理算法研究 ...
- Windows 交叉编译之 make
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/w8YV_TUb4QwsgChu3AspHg Make 是什么 Mak ...
- java_web:jdbc里的零碎笔记
name="%"+name+"%"; 这段代码是用于构建SQL语句中的模糊查询条件的,其中name是一个字符串类型的变量,表示查询的关键字. %是通配符,在SQ ...
- 【技术实战】Vue技术实战【三】
需求实战一 效果展示 代码展示 <template> <div style="display: flex;"> <div style="di ...

