海思ffmpeg的移植、安装
ffmpeg用于本次海思ss928芯片的 推流功能,需要将摄像头实时推送到外部的流媒体服务,流媒体服务解析可能有限制,所以需要安装x264库 进行编码后再推流。
一、ffmpeg的移植、安装
ffmpeg用于本次海思ss928芯片的 推流功能,需要将摄像头实时推送到外部的流媒体服务,流媒体服务解析可能有限制,所以需要安装x264库 进行编码后再推流。
1.安装准备
需要去官方下载较新的 xvid、x264、ffmpeg 源码,或者下载这边准备好的源码资源
----这边后续上传源码下载链接
然后需要逐步交叉编译 xvid、x264、ffmpeg 然后再安装。
注:因为编译环境是x86的处理器架构,而运行环境是aarch64的架构所以 编译时都需要交叉编译,指定运行环境的处理器架构对应的编译器。
2.编译xvid
//切换到解压后的源码路径下执行
./configure --prefix=/home/workspace/arm_soft/ --host=arm-hisiv100nptl-linux --target=arm-linux
make -j 8
make install
3.编译x264
运行配置文件,需要修改其中交叉编译的处理器架构
//切换到解压后的源码路径下执行
./configure --prefix=/home/workspace/arm_soft --host=aarch64-mix210-linux --enable-shared --disable-asm
修改config.mak
修改内容如下:
CC=gcc 改为 CC=aarch64-mix210-linux-gcc
LD=gcc -o 改为 LD=aarch64-mix210-linux-gcc -o
RANLIB=ranlib 改为 RANLIB=aarch64-mix210-linux-ranlib
STRIP=strip 改为 STRIP=aarch64-mix210-linux-strip
然后执行
make -j 8
make install
需要将xvid和x264 make install后的头文件include、库文件lib 拷贝到同一个路径下,便于 编译ffmpeg时 指定一个头文件和库文件路径即可。
FFMPEG交叉编译加上X264动态库时,由于X264动态库交叉编译是单独编译的,而./configure链接库是用的pkg-config,pkg-config只会从默认的路径链接,在Ubuntu20.04和Ubuntu22.04环境下,配置了全局变量依旧不行,解决办法为在./configure后加上--pkg-config="pkg-config --static" (其他配置选项),就可解决.
原文链接:https://blog.csdn.net/yinxiangyezi/article/details/129683911
编译make install 生成可执行程序后,需要把x264 lib文件夹中的pkgconfig文件夹配置到环境变量
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/mlibs/x264-arm64/lib/pkgconfig/
配置完后用pkg-config --list-all|grep x264检查一下,出现
x264 x264 - H.264 (MPEG4 AVC) encoder library
再执行ffmpeg的 ./configure
4.编译、安装部署ffmpeg
执行ffmpeg的 ./configure
./configure --prefix=/home/mlibs/ffmpeg_hisix210/ --pkg-config="pkg-config --static" --disable-debug --disable-avdevice --enable-encoders --enable-ffmpeg --enable-gpl --enable-small --target-os=linux --arch=aarch64 --enable-nonfree --enable-cross-compile --cross-prefix=aarch64-mix210-linux- --enable-encoder=libx264 --enable-libx264 --extra-cflags=-I/home/mlibs/x264libs/include --extra-ldflags=-L/home/mlibs/x264libs/lib --enable-static --cc=aarch64-mix210-linux-gcc
然后执行 make 和 make install 安装包部署工作,将make install 后在prefix 指定路径下生成的 bin include share 文件夹拷贝到 / 根目录,将lib 文件夹下的文件拷贝到 /lib64 文件夹下,如:
//拷贝对应的可执行文件和头文件等,完成安装过程
cp -r /mnt/shareDir/ffmpeg_libs/lib* /lib64/
安装完成后(拷贝后可以不用配置环境变量,因为/bin文件夹下面已经拷贝了可执行文件),查看是否安装成功
ffmpeg --version
//测试拉流,拷贝流文件然后直接再向目标地址推流
./ffmpeg -i rtmp://112.6.12.78:10935/hls/stream_1233 -c copy -f flv rtmp://172.20.1.22:28200/live/test11111
//指定编码格式推流
ffmpeg -i rtsp://127.0.0.1:8554/mnt/rtsp_lib1 -vcodec h264 -acodec copy -f flv rtmp://172.20.1.22:28200/live/test11111
FFmpeg+Nginx 推流媒体参考
海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)_ffmpeg nginx推流_温柔大猩猩的博客-CSDN博客
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)