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 ...
随机推荐
- Vue——计算属性、监听属性、Vue生命周期、组件介绍和使用、组件间通信、ref属性
计算属性 // 1 计算属性是基于他们的依赖变量进行缓存的 // 2 计算属性只有在它的相关依赖变量发生改变时才会重新求值,否则不会变(函数只要页面变化,就会重新运算) // 3 计算属性就像pyth ...
- 深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型.DSSM模型召回排序策略以及和其他模型对比 1.DeepFM模型 1.1.模型简介 CTR预估是目前推荐系统的核心技术,其目标是预估用户点 ...
- SLF4J门面日志框架源码探索
1 SLF4J介绍 SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的简单外观或抽象.因此,它使用户能够使用单个依赖项处理任何日志框架,例如:L ...
- 聊聊 RocketMQ 主从复制
提到主从复制,我们可能立马会联想到 MySQL 的主从复制. MySQL 主从复制是 MySQL 高可用机制之一,数据可以从数据库服务器主节点复制到一个或多个从节点. 这篇文章,我们聊聊 Rocket ...
- tensorflow神经网络归一化方法
参考https://blog.csdn.net/chary8088/article/details/81542879
- MyBatis(log4j)
log4j介绍 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...
- Linux实现双击自动安装deb文件
在Linux中,有几个常用的软件可以实现双击自动安装.deb文件的功能.以下是一些推荐的软件: 1. GDebi:GDebi是一个轻量级的图形化工具,专门用于安装.deb文件.它可以解决依赖关系,并提 ...
- React 前端应用中快速实践 OpenTelemetry 云原生可观测性(SigNoz/K8S)
OpenTelemetry 可用于跟踪 React 应用程序的性能问题和错误.您可以跟踪从前端 web 应用程序到下游服务的用户请求.OpenTelemetry 是云原生计算基金会(CNCF)下的一个 ...
- Linux下实现程序开机自启(rc.local 和 systemctl)
需求: 实现了一个程序,需要在ubuntu上跑起来.能开机自启,且崩溃了也能自己重启.有两种实现方式,个人推荐第二种. 方式1: 实现方式: 直接将要启动程序的运行命令加在 /etc/rc.local ...
- 树形DP + 换根DP
树形DP--基础 P1352 没有上司的舞会 设 \(f[i][0/1]\) 表示第 \(i\) 个人不去或者去. 如果第 \(i\) 个人没去,那么下属可去可不去,所以 \(f[i][0] = \s ...

