pc蛋蛋网站开发,机械加工分类,张家口网站建设,网站建设财务项目管理制度[嵌入式AI从0开始到入土]嵌入式AI系列教程
注#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间#xff0c;后期会考虑出视频教程#xff0c;务必催更#xff0c;以防我变身鸽王。
第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…[嵌入式AI从0开始到入土]嵌入式AI系列教程
注等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间后期会考虑出视频教程务必催更以防我变身鸽王。
第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官方模型适配工具使用 第4期 炼丹炉的搭建基于Ubuntu23.04 Desktop 第5期 炼丹炉的搭建基于wsl2_Ubuntu22.04 第6期 Ubuntu远程桌面配置 第7期 下载yolo源码及样例运行验证 第8期 在线Gpu环境训练基于启智ai协作平台 第9期 转化为昇腾支持的om离线模型 第10期 jupyter lab的使用 第11期 yolov5在昇腾上推理 第12期 yolov5在昇腾上应用 第13期_orangepi aipro开箱测评 第14期 orangepi_aipro小修补含yolov7多线程案例 第15期 orangepi_aipro欢迎界面、ATC bug修复、镜像导出备份 第16期 ffmpeg_ascend编译安装及性能测试 未完待续… 文章目录 [嵌入式AI从0开始到入土]嵌入式AI系列教程前言一、卸载ffmpeg二、前置依赖安装1、libx264编码器2、libx265编码器3、fdk-aac4、lame5、speex 三、获取源码四、编译安装1、添加环境变量2、编译配置3、编译安装4、验证编码器是否可用 五、性能测试六、问题1、安装x265时找不到numa2、找不到ascend相关的编码器3、fftools/ffmpeg_opt.c:23:10: fatal error: csignal: No such file or directory4、xxx.so no found1、添加环境变量2、配置动态链接库 总结 前言
注本文基于香橙派24.02.27日ubuntu_desktop镜像 镜像预装的ffmpeg是4.5.4版本h265解码1080*1080的mp4视频帧数低至0.8帧。几乎处于不可用的状态。启用h265_ascend编解码器后能够凭借libx265编解码器不到一半的cpu利用率实现超过20帧的成绩。 镜像预装ffmpeg情况如下但是没有h265编码器。 本文测试视频信息如下统一不处理音频数据。
ffmpeg -i test.mp4 -s 1920*1080 -c:v libx264 -an out.264用时3分38秒cpu利用率几乎全程100%
一、卸载ffmpeg
sudo apt --purge remove ffmpeg
ffmpeg -version #如下图所示即为卸载成功二、前置依赖安装
libx264和libx265可以不安装这里是为了对性能做对比。
1、libx264编码器
没什么好说的照抄
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar jxf x264-master.tar.bz2
cd x264-master
./configure --prefix/usr --enable-shared --disable-asmmake -j4
sudo make install
x264 出现如下提示表示安装成功
2、libx265编码器
这里我使用的是最新的版本但是需要修改几个地方否则配置的时候就会报错。
wget https://www.x265.org/files/x265_v3_3.tar.gz
tar -xf x265_3.3.tar.gz
cd x265_3.3/build/linux这里需要修改几个地方否则配置的时候就会报错。
vim ../../source/CMakeLists.txt
#43行添加aarch64
set(ARM_ALIASES armv6l armv7l aarch64)67-75行这里替换整段
elseif(ARMMATCH GREATER -1)if(${SYSPROC} STREQUAL aarch64)message(STATUS Detected aarch64 target processor)set(AARCH64 1)add_definitions(-DX265_ARCH_AARCH641)else()if(CROSS_COMPILE_ARM)message(STATUS Cross compiling for ARM arch)else()set(CROSS_COMPILE_ARM 0)endif()message(STATUS Detected ARM target processor)set(ARM 1)add_definitions(-DX265_ARCH_ARM1 -DHAVE_ARMV61)endif()接着安装两个包
sudo apt-get install libnuma-dev
sudo apt-get install nasm接着是是两个包名的问题
vim ../../source/cmake/FindNasm.cmake
#23行
find_package_handle_standard_args(Nasm
vim ../../source/cmake/FindNuma.cmake将212632374143行的NUMA改为Numa,修改后如图所示。
再安装一个包不然不会出现配置界面
sudo apt-get install cmake-curses-gui
./make-Makefiles.bash如果上面配置正确会弹出如下配置界面请参考下图配置OFF的选项看需求开启ON的不要动会导致编译失败。 这里使用方向键移动空格开启/关闭选项修改完成后按c配置确认输出信息如下 此处如果出现libnuma找不到的情况看问题区第一条。 按eg完成配置。 配置完成后编译安装
make -j4
sudo make install
x265 #验证安装3、fdk-aac
fdk-aac 是一个高效、高质量的开源音频编解码器它实现了 MPEG 高级音频编解码器AAC的标准。
wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-2.0.3.tar.gz
tar -zxf fdk-aac-2.0.3.tar.gz
cd fdk-aac-2.0.3
sudo apt-get install autoconf
sudo apt-get install libtool
./autogen.sh
./configure --enable-shared CFLAGS-fPIC配置成功你将看到如下提示信息
make -j4
sudo make install
export PKG_CONFIG_PATH/usr/local/lib/pkgconfig/ #建议加到.bashrc里4、lame
LAME 是一个开源的 MP3 编码器它的名字最初是作为“LAME Ain’t an MP3 Encoder”的递归缩写。尽管名字中暗示它不是一个 MP3 编码器但实际上 LAME 是一个非常流行和广泛使用的 MP3 编码库和程序。它允许用户将音频文件转换为 MP3 格式并提供广泛的编码选项来调整压缩效率和音频质量。
wget https://zenlayer.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -zxf lame-3.100.tar.gz
cd lame-3.100
./configure --enable-shared
make -j4
sudo make install5、speex
Speex 是一个开源的音频编解码器专门设计用于处理语音信号。Speex 非常适合实时通信应用如VoIP和视频会议系统因为它可以处理非常短的音频帧减少传输延迟Speex 包括噪声抑制、回声消除和增益控制等语音增强功能。
wget https://ftp.osuosl.org/pub/xiph/releases/speex/speex-1.2.1.tar.gz
tar -zxf speex-1.2.1.tar.gz
cd speex-1.2.1
./configure
make -j4
sudo make install三、获取源码
这里使用的是昇腾的官方仓库除了版本有点老是4.4.1现在都6.1了。后期我试试移植过去。
git clone https://gitee.com/ascend/mindxsdk-referenceapps.git四、编译安装
ASCEND_HOME_PATH这个是cann自带的指向/usr/local/Ascend/ascend-toolkit/latest。
1、添加环境变量
这一步能有效解决下面extra-cflags和extra-ldflags报错的问题。
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export LD_LIBRARY_PATH/usr/lib:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:$LD_LIBRARY_PATH2、编译配置
cd mindxsdk-referenceapps/mxVision/Ascendffmpeg
chmod x ./configure
chmod x ./ffbuild/*.sh
#除前5个配置外其余看需求设置
./configure \--prefix/usr \--enable-shared \--extra-cflags-I${ASCEND_HOME_PATH}/acllib/include \--extra-ldflags-L${ASCEND_HOME_PATH}/aarch64-linux/lib64 \--extra-libs-lacl_dvpp_mpi -lascendcl \--enable-ascend \--enable-gpl \--enable-nonfree \--enable-ffplay \--enable-libfdk-aac \--enable-libmp3lame \--enable-libx264 \--enable-libx265 \--enable-filterdelogo \--enable-debug \--disable-optimizations \--enable-libspeex \--enable-shared \--enable-pthreads \--enable-version3从这开始就是噩梦你会发现日志中h264_ascend和h265_ascend这俩编解码器都是enableenable hwaccels中也有h264_ascend。但是编译后就是没有的情况或者就是存在但是疯狂报错。解决办法看问题区第2条。
3、编译安装
make -j$(nproc)不出意外的话又要出意外了 直接看问题区第3点
sudo make install到这里安装算完成了但很可能会有类似找不到libfdk-aac.so.2等的报错看问题区第4点。
4、验证编码器是否可用
ffmpeg -encoders | grep ascend
ffmpeg -decoders | grep ascend
ffmpeg -hwaccels | grep ascend确认出现图中的ascend编码器
五、性能测试
依旧是我们开头的test.mp4视频。
#h264编解码测试
ffmpeg -i test.mp4 -s 1920*1080 -c:v libx264 -an out1.264
ffmpeg -hwaccel ascend -i test.mp4 -s 1920*1080 -c:v h264_ascend -an out_ascend.264#h265编解码测试
ffmpeg -i test.mp4 -s 1920*1080 -c:v libx265 -an out.265
ffmpeg -hwaccel ascend -i test.mp4 -s 1920*1080 -c:v h265_ascend -an out_ascend.265结果如下
编解码器用时h2643分39秒h264_ascend1分39秒h26540分49秒h265_ascend1分39秒
实测在h265编码环节ascend硬件编解码有大约25倍的提升。 注意这个数据还不是ascend硬件编解码器的极限全程平均cpu在60%左右而libx264或libx265几乎跑满了cpu。
六、问题
1、安装x265时找不到numa
这里有两种方案
检查x265_3.3/source/cmake/FindNuma.cmake这个文件中的NUMA是否被全部替换为了Numa至少我上文提到的几行必须更改在x265_3.3/build/linux目录下执行以下命令指定Numa路径。
cmake -D Numa_INCLUDE_DIR/usr/include/libnuma -D Numa_LIBRARY/usr/lib/libnuma.so -D Numa_ROOT_DIR/usr .2、找不到ascend相关的编码器
这里我也是查了很久甚至看了N长的编译日志日志中没有出现ascend相关的信息最后发现需要在./configure之前添加以下环境变量
export LD_LIBRARY_PATH${ASCEND_HOME_PATH}/acllib/lib64/:$LD_LIBRARY_PATH #建议使用下面的绝对路径
export LD_LIBRARY_PATH/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64/:$LD_LIBRARY_PATH3、fftools/ffmpeg_opt.c:23:10: fatal error: csignal: No such file or directory 将这两个文件的报错的地方的csignal改为signal.h
sudo apt-get install build-essential
vim fftools/ffmpeg_opt.c
vim fftools/ffmpeg.c4、xxx.so no found
这里以libfdk-aac.so.2为例
find / -name libfdk-aac.so.2我们查到这个文件在/usr/local/lib目录接着就有两种方案了推荐第二种这样所有用户都可以使用。
1、添加环境变量
export LD_LIBRARY_PATH/usr/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH/usr/local/lib:$LD_LIBRARY_PATH2、配置动态链接库
sudo vim /etc/ld.so.conf
#将我们搜索到的路径加入其中sudo ldconfig总结
以上就是ffmpeg启用ascend硬件编辑器的相关过程当然要想压榨极限性能建议使用DVPP不过就是没有这么方便罢了。