当前位置: 首页 > news >正文

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,截图如下:
0021

可以看到版本号是4.1.11,版本号的高低倒是无所谓,关键是我们无法看到RK的硬编,那么接下来我们看一下ffmpeg的264编码器可以使用的有哪些?使用ffmpeg -encoders | grep 264
0022

可以看到有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文件如下所示:
0023

最后执行命令sudo ldconfig,然后我们看一下ffmpeg,/usr/local/ffmpeg/bin/ffmpeg -version,可以看到ffmpeg的版本是6.0,rkmpp和x264都已经启用了,就OK了!
0024

当然,这里也可以把ffmpeg的命令添加到PATH里,这里就不多做叙述了。
接下来我们分别看看现在ffmpeg的解码和编码!
输入:/usr/local/ffmpeg/bin/ffmpeg -decoders | grep '264'
0025

可以看到h264_rkmpp的解码器已经存在了,接下来看看编码器!
0026

嗯,怎么没有出现rkmpp的编码器呢,其实是因为协议的问题,所以导致ffmpeg并不支持rkmpp的编码器,至少原版6.0的ffmpeg是不支持的,现在github上面有了一个支持RKMPP的ffmpeg版本,但是我就不去编译了,而我们使用的版本,如果直接使用ffmpeg进行硬件加速解码进行转码,也是不可以的,因为rkmpp解码器输出的是DRM帧,所以从下一篇开始就要正式进入使用RKMPP和FFMPEG进行RTMP上传啦。

相关文章:

02.FFMPEG的安装和添加硬件加速自编译

说一个极其郁闷的事情,就在昨天收到3399的一块板子后,往电脑上面一插,然后悲剧的事情就发生了,我的电脑蓝屏重启了,这下好了,我写到一半的帖子也不见了,我的SSH里面的记录全部消失了&#xff0c…...

elementUI 的上传组件<el-upload>,自定义上传按钮样式

方法一&#xff1a; 原理&#xff1a;调用<el-upload>组件的方法唤起选择文件事件 效果&#xff1a; 页面代码&#xff1a; 1、选择图片按钮 <div class"flex_row_spacebetween btn" click"chooseImg"><span class"el-icon-plus ic…...

【卷积神经网络】卷积,池化,全连接

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

【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供电

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

骨传导耳机游泳能戴吗?骨传导游泳耳机哪个牌子好?

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

18万字应急管理局智慧矿山煤矿数字化矿山技术解决方案WORD

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

【mysql】MySQL CUP过高如何排查?

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

lua实现http的异步回调

想用lua实现与http服务器的通信&#xff0c;请求一些数据会回来&#xff0c;默认lua.socket.http是同步的&#xff0c;所以想弄一个异步的方式 测试环境 lua 5.1 同步 以下是同步的代码&#xff0c;其中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.开放安全组&#xff0c;内部与外部 5.测试配置与跳转是否成功 1.云服务申请免费的SSL证书 1.1.登录云平台找到SSL证书 注意&#xff1a;博主这里是腾讯云&#x…...

隧道代理技术解析:为批量数据采集提供强大支持

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

小程序制作教程:从零开始搭建企业小程序

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

Redis-秒杀

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

2022年下半年信息安全工程师下午真题及答案解析

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

【前端|Javascript第5篇】全网最详细的JS的内置对象文章!

前言 在当今数字时代&#xff0c;前端技术正日益成为塑造用户体验的关键。我们在开发中需要用到很多js的内置对象的一些属性来帮助我们更快速的进行开发。或许你是刚踏入前端领域的小白&#xff0c;或者是希望深入了解内置对象的开发者&#xff0c;不论你的经验如何&#xff0c…...

Python pycparser(c文件解析)模块使用教程

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

解决IDEA tomcat控制台只有server日志

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

Java版本+企业电子招投标系统源代码+支持二开+Spring cloud tbms

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

FinalShell SSH工具安装教程及编辑窗口修改背景颜色,自定义背景图片,修改字体,修改快捷键(详细图文教程)

FinalShell 在 Windows 上提供了一个方便、安全、功能完备的远程管理工具。它的中文支持和自定义功能让其适合国内 Linux 系统管理者使用。与 Xshell 等软件相比&#xff0c;FinalShell 更注重功能实用性。 目录 FinalShellFinalShell的安装教程FinalShell 的一些主要功能和特点…...

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

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

Gradio实战:用gr.Button和gr.Markdown打造高颜值交互界面(附CSS美化技巧)

Gradio界面美学革命&#xff1a;从基础组件到高级定制的全链路设计指南 在AI应用爆炸式增长的今天&#xff0c;一个美观直观的交互界面已经成为产品成功的关键因素。Gradio作为最受欢迎的AI应用快速构建工具&#xff0c;其默认样式往往难以满足专业级产品的视觉需求。本文将带您…...

CogVideoX-2b效果实测:中文vs英文提示词生成质量差异分析

CogVideoX-2b效果实测&#xff1a;中文vs英文提示词生成质量差异分析 1. 引言&#xff1a;当AI导演遇到不同语言 想象一下&#xff0c;你有一个能听懂你说话、并把你描述的场景变成视频的AI导演。你告诉它&#xff1a;“一个宇航员在月球上漫步&#xff0c;远处是蓝色的地球。…...

OpenClaw+GLM-4.7-Flash低成本方案:自建模型替代SaaS API

OpenClawGLM-4.7-Flash低成本方案&#xff1a;自建模型替代SaaS API 1. 为什么选择自建模型替代商业API 去年夏天&#xff0c;当我第一次尝试用OpenClaw自动化处理公司周报时&#xff0c;被OpenAI的API账单吓了一跳——简单的文档整理和摘要生成&#xff0c;一个月竟然消耗了…...

MeetingBar AppleScript自动化:会议开始前自动暂停音乐的终极指南

MeetingBar AppleScript自动化&#xff1a;会议开始前自动暂停音乐的终极指南 【免费下载链接】MeetingBar &#x1f1fa;&#x1f1e6; Your meetings at your fingertips in the macOS menu bar 项目地址: https://gitcode.com/gh_mirrors/me/MeetingBar MeetingBar是…...

别再傻傻分不清!MSATA、SATA、M.2接口实物对比与选购避坑指南

别再傻傻分不清&#xff01;MSATA、SATA、M.2接口实物对比与选购避坑指南 第一次装机时&#xff0c;看着主板上密密麻麻的接口和金手指&#xff0c;我盯着手里的硬盘愣是分不清该插哪个槽。这种尴尬在DIY圈子里太常见了——买回来的M.2固态硬盘插不进主板&#xff0c;或是错把S…...

AI辅助开发:用提示词让快马AI自动生成技术职级成长路径分析应用

AI辅助开发&#xff1a;用提示词让快马AI自动生成技术职级成长路径分析应用 最近在研究技术职级体系时&#xff0c;发现很多开发者对阿里P10这类高级职位的成长路径特别感兴趣。但手动整理这些信息费时费力&#xff0c;于是尝试用AI辅助开发的方式快速生成一个可视化分析工具。…...

从一道经典OJ题出发:详解二叉树‘凹入表示法’的输出技巧与C++实现

从一道经典OJ题出发&#xff1a;详解二叉树‘凹入表示法’的输出技巧与C实现 1. 凹入表示法的独特魅力与实现挑战 在算法竞赛和数据结构面试中&#xff0c;二叉树的输出格式往往成为区分选手水平的关键细节。不同于常见的层序遍历或图形化展示&#xff0c;凹入表示法&#xff0…...

OpenClaw:AI 权限治理的核心问题

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

提升开放平台开发效率,快马AI工具链自动化集成与测试

在企业级开放平台的开发过程中&#xff0c;效率往往是决定项目成败的关键因素之一。传统的开发流程中&#xff0c;开发者需要花费大量时间在重复性工作上&#xff0c;比如编写API客户端代码、配置测试环境、维护文档等。这些工作不仅耗时&#xff0c;还容易出错。今天我想分享一…...

全格式文档智能处理:AnythingLLM的多模态知识管理解决方案

全格式文档智能处理&#xff1a;AnythingLLM的多模态知识管理解决方案 【免费下载链接】anything-llm 这是一个全栈应用程序&#xff0c;可以将任何文档、资源&#xff08;如网址链接、音频、视频&#xff09;或内容片段转换为上下文&#xff0c;以便任何大语言模型&#xff08…...