参考以下文章,实现将ffmpeg 经过交叉编译后 运行在J5平台上 ,
FFmpeg移植到IMX6ULL arm开发板(含x264编译步骤)_ffmpeg移植到arm上_supersmart@的博客-CSDN博客
目的是,在j5端能对RTSP流进行转流操作(如转像素等)
交叉编译工具
这里为J5的交叉编译工具配置环境变量,首先找到J5交叉编译工具所在的位置
/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/
在sudo vi /etc/profile添加环境变量,在文末添加以下内容
export PATH=$PATH:/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin
重启生效。
为了以防万一,我又在~/.bashrc中为其添加环境变量
gedit ~/.bashrc #通过记事本修改,也可以用vi、vim等
#在文末添加这一行
export PATH=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin:$PATH
然后source ~/.bashrc让命令生效
验证是否成功
文件路径
本次用到相关的重要文件都放在路径:/home/wangmaozhu/GP/ffmpeg下,文件结构如下:
├── x264-snapshot-20171109-2245:该文件是x264的源代码,因为FFMEPG没有X264编码能力,所以先对x264进行编译,生成对应的arrch64版本
├──linux_x264:生成的arrch64版本的x264
├── ffmpeg-3.4.5
│ ├── install:编译时候连接到了x264,经过验证成功
└── yz:用来把前面两个进行编译的相关信息移植到J5中,只需要bin和lib文件夹下的内容其实就行
编译x264
因为ffmpeg有对h264的解码能力,但是并没有编码能力,所以这里先对h264进行编码,生成的文件会存放在:linux_x264文件夹下。
进入到x264-snapshot-20171109-2245/路径下,执行:
./configure --prefix=/home/wangmaozhu/linux_x264 --enable-shared --host=aarch64-linux-gnu --cross-prefix=aarch64-linux-gnu- -march=armv7-a
#相关的配置
make & make install
#生成的文件会放在/home/wangmaozhu/linux_x264下,可以自己修改位置
编译FFmpeg
├── ffmpeg-3.4.5
│ ├── install:编译时候连接到了x264
生成的文件存放在该路径下。
进入到 ffmpeg-3.4.5/路径下,执行:
./configure --enable-cross-compile --cross-prefix=aarch64-linux-gnu- --arch=aarch64 --target-os=linux --cc=aarch64-linux-gnu-gcc --prefix=KaTeX parse error: Expected 'EOF', got '#' at position 387: …linux_x264/lib #̲注意最后的应该是链接X264文…PWD/install下(也就是当前路径下的install文件下),可以自己修改位置
最后可以验证一下文件类型:
移植到J5
移植时将编译好的x264和ffmpeg对应的bin,lib目录下的文件移植到对应板子上的/usr/bin,/usr/lib目录下,我把它们放在yz的文件下。复制到J5的对应路径下即可。
#“提示没有权限
#进入/usr/bin路径,执行:
chmod u+x ffmpeg ffprobe ffserver x264
然后进入/usr/lib路径后,执行命令 ln -s 查看软连接是否正常
如果软连接不正常,删除掉没用的软连接,并重新创建软连接:
ln -s libx264.so.152 libx264.so
验证:查看ffmpeg版本
ffmpeg -version
查看支持的编解码:
验证测试
这里简单的用frame8.yuv转成output.264
参考教程:
1、安装交叉编译器arm-none-liunx-gnueabihf
2、FFmpeg移植到IMX6ULL arm开发板(含x264编译步骤)
3、Linux:移植ffmpeg到ARM板(含x264编译步骤)
4、Linux下ffmpeg开源库移植到ARM开发板。
5、arm Linux平台下FFmpeg的移植