02.FFMPEG的安装和添加硬件加速自编译
说一个极其郁闷的事情,就在昨天收到3399的一块板子后,往电脑上面一插,然后悲剧的事情就发生了,我的电脑蓝屏重启了,这下好了,我写到一半的帖子也不见了,我的SSH里面的记录全部消失了,最关键的是SSH还没有退出,所以查询bash_history都查询不到,无语泪凝咽。所以,又重新刷机,然后重新整理思路,还得按照以前的步骤再来一遍,不过以前的不少弯路肯定是可以避免的了!
上次聊到刷机后已经成功通过SSH连接到板子了,先来看一下板子的内核吧,输入uname -a
可以看到Linux yy3568-alip 4.19.232 #18 SMP Mon Jul 24 09:57:48 CST 2023 aarch64 GNU/Linux
板子的内核是4.19的,通过cat /etc/issue
可以看到Debian 10的系统,4.19的内核好像有点旧了,但是之后有个地方恰好就需要4版本的内核,这个先埋个伏笔。那么接下来我们的目标是做一个音视频处理设备,就要进行选择使用什么库来进行音视频处理,总不可能直接从底层一步一步来,我选择的是使用FFMPEG,所以需要先把FFMPEG安装起来!
一、APT形式安装FFMPEG
使用Debian系统的最大好处就是安装软件十分方便,我喜欢Debian的最主要的一个原因就在于此,首先看看软件源,通过cat /etc/apt/source.list
进行查看,可以看到官方已经很贴心的切换到国内的网易源了,那就直接sudo apt update
更新软件源吧,更新后再使用sudo apt upgrade
进行软件升级,最后稍等一会儿就可以升级完成了。那么接下来就要使用APT的方式安装FFMPEG,但是,不建议你用这种方式,可以继续往下看,但别跟着来。直接一句sudo apt install ffmpeg
,然后进行等待安装完成后,我们来看一下ffmpeg的信息,输入ffmpeg -version
,截图如下:
可以看到版本号是4.1.11,版本号的高低倒是无所谓,关键是我们无法看到RK的硬编,那么接下来我们看一下ffmpeg的264编码器可以使用的有哪些?使用ffmpeg -encoders | grep 264
。
可以看到有5个编码器,前2个是软件编码器,后面3个是硬件编码器,但是很明显也不是RK的硬编,保险起见进行尝试调用,结果如我们的预期一致,全部失败!
所以现在只能将ffmpeg进行卸载了。使用sudo apt remove ffmpeg
进行卸载。
二、下载源码进行编译
每次说到下载源码进行编译,总是让人恐惧,不由想起当年在大学的时候,树莓派2才刚出来,ARM板子的性能还在几百Mhz,所以必须要使用交叉编译来进行,不过对于RK3568来讲就完全没有这个烦恼了,直接在板子上面编译也是很快的。
1.安装GCC和G++
说了要自己编译,那么首先肯定第一步就是要安装编译器,编译器的安装是很简单的。
sudo apt install gcc g++ make
在安装好编译器后,接下来还不可以编译FFMPEG,而是要先编译一些别的库,比如支持软解软编的x264和RK的硬件加速。
2.编译RKMPP
cd
git clone https://github.com/rockchip-linux/mpp
cd mpp/build/linux/aarch64
bash make-Makefiles.bash
make -j4
sudo make install
在编译RKMPP的时候,需要注意一下内核版本最好是Linux4的,这一点在RKMPP的手册中有提到,所以咱们板子正好4.19的内核,非常符合这个要求!
3.编译x264
cd
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --prefix=/usr/local/x264 --disable-opencl --enable-static --enable-shared
make -j4
sudo make install
4.编译libdrm
cd
wget https://dri.freedesktop.org/libdrm/libdrm-2.4.89.tar.bz2
tar -jxvf libdrm-2.4.89.tar.bz2
cd libdrm-2.4.89
./configure --prefix=/usr/local/libdrm --host=aarch64-linux-gnu
make -j4
sudo make install
5.编译ffmpeg
去官网查了一下,目前FFMPEG的最新版本是6.0,那就它吧。
cd
wget https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz
sudo apt install xz-utils
xz -d ffmpeg-6.0.tar.xz
tar -xvf ffmpeg-6.0.tar
cd ffmpeg-6.0
export PKG_CONFIG_PATH=/usr/local/x264/lib/pkgconfig
./configure --prefix=/usr/local/ffmpeg --enable-version3 --enable-libdrm --enable-rkmpp --enable-libx264 --enable-nonfree --enable-gpl
make -j4
sudo make install
然后接下来使用sudo vim /etc/ld.so.conf
命令,在最后一行加入x264,/usr/local/x264/lib
,完成以后的ld.so.conf文件如下所示:
最后执行命令sudo ldconfig
,然后我们看一下ffmpeg,/usr/local/ffmpeg/bin/ffmpeg -version
,可以看到ffmpeg的版本是6.0,rkmpp和x264都已经启用了,就OK了!
当然,这里也可以把ffmpeg的命令添加到PATH里,这里就不多做叙述了。
接下来我们分别看看现在ffmpeg的解码和编码!
输入:/usr/local/ffmpeg/bin/ffmpeg -decoders | grep '264'
可以看到h264_rkmpp的解码器已经存在了,接下来看看编码器!
嗯,怎么没有出现rkmpp的编码器呢,其实是因为协议的问题,所以导致ffmpeg并不支持rkmpp的编码器,至少原版6.0的ffmpeg是不支持的,现在github上面有了一个支持RKMPP的ffmpeg版本,但是我就不去编译了,而我们使用的版本,如果直接使用ffmpeg进行硬件加速解码进行转码,也是不可以的,因为rkmpp解码器输出的是DRM帧,所以从下一篇开始就要正式进入使用RKMPP和FFMPEG进行RTMP上传啦。
相关文章:

02.FFMPEG的安装和添加硬件加速自编译
说一个极其郁闷的事情,就在昨天收到3399的一块板子后,往电脑上面一插,然后悲剧的事情就发生了,我的电脑蓝屏重启了,这下好了,我写到一半的帖子也不见了,我的SSH里面的记录全部消失了,…...

elementUI 的上传组件<el-upload>,自定义上传按钮样式
方法一: 原理:调用<el-upload>组件的方法唤起选择文件事件 效果: 页面代码: 1、选择图片按钮 <div class"flex_row_spacebetween btn" click"chooseImg"><span class"el-icon-plus ic…...

【卷积神经网络】卷积,池化,全连接
随着计算机硬件的升级与性能的提高,运算量已不再是阻碍深度学习发展的难题。卷积神经网络(Convolution Neural Network,CNN)是深度学习中一项代表性的工作,CNN 是受人脑对图像的理解过程启发而提出的模型,其…...

【SA8295P 源码分析】76 - Thermal 功耗 之 /dev/thermalmgr 相关调试命令汇总
【SA8295P 源码分析】76 - Thermal 功耗 之 /dev/thermalmgr 相关调试命令汇总 1、配置文件:/mnt/etc/system/config/thermal-engine.conf2、获取当前SOC所有温度传感器的温度:cat /dev/thermalmgr3、查看所有 Thermal 默认配置和自定义配置:echo query config > /dev/th…...

以太网(一):PoE供电
一、定义: PoE系统包括供电端设备(PSE)和受电端设备(PD)两部分PoE(Power over Ethernet):是一种可以在以太网中透过双绞线来传输电力与数据到设备上的技术PSE(Power S…...

骨传导耳机游泳能戴吗?骨传导游泳耳机哪个牌子好?
溽热的夏日,如果能够跳入水中畅游一番,那真的是再好不过了,既能强身健体,又能降温解暑。公共的游泳场馆人声鼎沸,像我这种“社恐”患者,如果在场馆中要待好几个小时,难免会觉得时间漫长…...

18万字应急管理局智慧矿山煤矿数字化矿山技术解决方案WORD
导读:原文《18万字应急管理局智慧矿山煤矿数字化矿山技术解决方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 目 录 第一章 项目概述 1.1项目…...

【mysql】MySQL CUP过高如何排查?
文章目录 一. 问题锁定二. QPS激增会导致CPU飘高三. 慢SQL会导致CPU飘高四. 大量空闲连接会导致CPU飘高五. MySQL问题排查常用命令 一. 问题锁定 通过top命令查看服务器CPU资源使用情况,明确CPU占用率较高的是否是mysqld进程,如果是则可以明确CUP飘高的原…...

lua实现http的异步回调
想用lua实现与http服务器的通信,请求一些数据会回来,默认lua.socket.http是同步的,所以想弄一个异步的方式 测试环境 lua 5.1 同步 以下是同步的代码,其中http.request会被阻塞住的 local function send_request()local res,…...

云服务 Ubuntu 20.04 版本 使用 Nginx 配置SSL证书和nginx从HTTP跳转到HTTPS
1.云服务申请免费的SSL证书 2.从云服务SSL证书下载到本地解压上传到服务器 3.配置Nginx下的 nginx.cof 文件 4.开放安全组,内部与外部 5.测试配置与跳转是否成功 1.云服务申请免费的SSL证书 1.1.登录云平台找到SSL证书 注意:博主这里是腾讯云&#x…...

隧道代理技术解析:为批量数据采集提供强大支持
嘿!作为一名专业的爬虫程序员,我今天要和大家分享一个强大的技术,它能够为批量数据采集提供强大的支持——隧道代理技术。如果你在进行大规模数据采集任务时遇到了IP封禁和限制的问题,那么这项技术将是你的救星。废话不多说&#…...

小程序制作教程:从零开始搭建企业小程序
在如今的数字化时代,企业介绍小程序成为了企业展示与推广的重要工具。通过企业介绍小程序,企业可以向用户展示自己的品牌形象、产品服务以及企业文化等内容,进而提高用户对企业的认知度和信任度。本文将介绍如何从零开始搭建一个企业介绍小程…...

Redis-秒杀
唉 就记得当时抢冰墩墩的时候的秒杀了 我们要注意什么问题呢? 1.几百万人在这个瞬间抢冰墩墩 这个瞬间会有大量的请求 服务器要能抗的住 2.不能超卖,就那些冰墩墩 卖多了压根没有 好不容易抢到你说没货了怕不是要被冲烂 3.避免少卖 拢共就那些 你再少卖点 没屁了 4.防黄牛…...

2022年下半年信息安全工程师下午真题及答案解析
试题一 (20分) 已知某公司网络环境结构主要由三个部分组成,分别是DMZ区、内网办公区和生产区,其拓扑结构如图1-1所示。信息安全部的王工正在按照等级保护2.0的要求对部分业务系统开展安全配置。图1-1当中,网站服务器的IP地址是192.168.70.14…...

【前端|Javascript第5篇】全网最详细的JS的内置对象文章!
前言 在当今数字时代,前端技术正日益成为塑造用户体验的关键。我们在开发中需要用到很多js的内置对象的一些属性来帮助我们更快速的进行开发。或许你是刚踏入前端领域的小白,或者是希望深入了解内置对象的开发者,不论你的经验如何,…...

Python pycparser(c文件解析)模块使用教程
文章目录 安装 pycparser 模块模块开发者网址获取抽象语法树1. 需要导入的模块2. 获取 不关注预处理相关 c语言文件的抽象语法树ast3. 获取 预处理后的c语言文件的抽象语法树ast 语法树组成1. 数据类型定义 Typedef2. 类型声明 TypeDecl3. 标识符类型 IdentifierType4. 变量声明…...

解决IDEA tomcat控制台只有server日志
解决IDEA tomcat控制台只有server日志 确认tomcatxxx/conf/logging.properties文件是否存在,存在就会有。前提是在run configuration配置了打印多个日志...

Java版本+企业电子招投标系统源代码+支持二开+Spring cloud tbms
项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以…...

FinalShell SSH工具安装教程及编辑窗口修改背景颜色,自定义背景图片,修改字体,修改快捷键(详细图文教程)
FinalShell 在 Windows 上提供了一个方便、安全、功能完备的远程管理工具。它的中文支持和自定义功能让其适合国内 Linux 系统管理者使用。与 Xshell 等软件相比,FinalShell 更注重功能实用性。 目录 FinalShellFinalShell的安装教程FinalShell 的一些主要功能和特点…...

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测
uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测 uni-app中监听网络状态 下载插件 打开网络异常组件页面,点击"下载插件并导入HBuilderX"按钮,打开HBuilderX软件后,选择需要导入插件的项目ÿ…...

TP5前后端分离RBAC权限管理API
TP5前后端分离RBAC权限管理API 1.创建配置项目2.管理员功能2.1登录验证2.2.返回分页数据2.3增删改功能 3.角色功能3.权限管理4.给管理员分配角色5.给角色分配权限6.导航菜单功能 坑神的博客文章可以参考,还可以和他交流请教,坑神人很nice! 1.…...

p-级数的上界(Upper bound of p-series)
积分判别法-The Integral Test https://math.stackexchange.com/questions/2858067/upper-bound-of-p-series https://courses.lumenlearning.com/calculus2/chapter/the-p-series-and-estimating-series-value/ 两个重要级数(p级数和几何级数) ht…...

QT如何打包
目录 1.windeployqt工具 2.工具位置 3.使用方法 4.注意事项 Qt Creator 默认以动态链接的方式生成可执行文件,该文件无法独立运行,必须为其提供所需的动态链接库。也就是说,只分享 Qt Creator 生成的可执行文件是不行的,必须将…...

【c语言】通讯录(动态版+文件+背景音乐)含源码
开饭了,之前写的通讯录,是否会有人觉得申请1000人的空间是不是有点用不上呀,怎么才能做到要多少申请多少个呢??我们学完动态内存管理,和文件的相关操作,终于可以继续完善我们的通讯录了 船新版本…...

c#后端获实体类多列最大值
如何在一个返回一个实体求某些列的最大值,最小值,平均值,求和呢? 过去一直都是用的循环对比,没有进行归纳,或者就是最笨的办法 var demos new List<Demo>();foreach (var item in demos){var values…...

腾讯云国际轻量应用服务器使用流程是什么呢?
腾讯云国际轻量应用服务器怎么使用呢?下面一起来了解一下: 1. 熟悉轻量应用服务器基础知识 ①什么是轻量应用服务器 TencentCloud Lighthouse? ②轻量应用服务器与云服务器 CVM 的区别是什么? ③为什么选择轻量应用服务器…...

CentOS 8 非编译方式 yum 安装 FFmpeg
FFmpeg 是一套免费的开源计算机程序,它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg 在 Linux 平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括 Windows、Mac OS X 等。大多数文章都是说的ubuntu上如何安装࿰…...

【Linux命令详解 | ssh命令】 ssh命令用于远程登录到其他计算机,实现安全的远程管理
文章标题 简介一,参数列表二,使用介绍1. 连接远程服务器2. 使用SSH密钥登录2.1 生成密钥对2.2 将公钥复制到远程服务器 3. 端口转发3.1 本地端口转发3.2 远程端口转发 4. X11转发5. 文件传输与远程命令执行5.1 文件传输5.1.1 从本地向远程传输文件5.1.2 …...

IP 地址监控工具
地址监控实用程序是一套 IP 工具,包括 IP 地址监控工具、流氓检测工具和 MAC 地址解析器,用于日常监控和管理 DNS 名称、IP和 MAC 地址。地址监控工具用于 IP监控,用于管理 DNS 名称、网络的 IP 和 MAC 地址,并跟踪 IP 地址。 IP…...

基于OpenCV的人脸识别和模型训练系统(万字详解)
前言 我们身边的人脸识别有车站检票,监控人脸,无人超市,支付宝人脸支付,上班打卡,人脸解锁手机。 人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸&#…...