建网站公司销售,企业服务有哪些,网站建设宁波,网站外部链接添加方式说一个极其郁闷的事情#xff0c;就在昨天收到3399的一块板子后#xff0c;往电脑上面一插#xff0c;然后悲剧的事情就发生了#xff0c;我的电脑蓝屏重启了#xff0c;这下好了#xff0c;我写到一半的帖子也不见了#xff0c;我的SSH里面的记录全部消失了#xff0c…说一个极其郁闷的事情就在昨天收到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 install4.编译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 --hostaarch64-linux-gnu
make -j4
sudo make install5.编译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.0rkmpp和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上传啦。