编译x264和ffmpeg,生成动态库和静态库(我在使用ffmpeg的静态库时发现有问题,因为默认的x264和ffmpeg不编译动态库,所以我们需要加上编译动态库的条件 "--enable-shared" 生成动态so库供使用)
libx264
libx264下载地址https://www.videolan.org/developers/x264.html
libx264编译命令:
./configure --enable-shared --enable-static --enable-strip --disable-cli
sudo make -j4
sudo make install
libx264最终会安装到/usr/local/lib目录下
ffmpeg-4.1
ffmpeg下载地址https://ffmpeg.org/download.html,我们这里下载最新版的ffmpeg-4.1.tar.bz2
ffmpeg编译命令:
./configure --arch=armel --target-os=linux --enable-shared --enable-gpl --enable-libx264 --enable-nonfree --enable-omx --enable-omx-rpi --enable-encoder=h264_omx --enable-mmal --enable-hwaccel=h264_mmal --enable-decoder=h264_mmal
如果显示报错 “error: OMX_Core.h not found”,则执行:sudo apt-get install libomxil-bellagio-dev
sudo make
sudo make install
ffmpeg最终也是安装到/usr/local/lib目录下
执行 ffmpeg最终显示如下:
接下来修改 ld.so.conf 文件
sudo vi /etc/ld.so.conf
添加一行 /usr/local/lib
最后执行sudo ldconfig
####################################
接下来我们将树莓派上生成的ffmpeg和x264同步到pc主机上,用于在pc上进行树莓派QT程序的开发
1.首先我们将树莓派上的一些用于QT开发的配置文件同步到pc主机的sysroot目录中,主机中执行以下命令
使用rsync命令将树莓派下的/usr/local同步到电脑本地的sysroot中
sudo rsync -avz [email protected]:/usr/local sysroot/usr
再次主机重新和树莓派同步
rsync -avz [email protected]:/lib sysroot
rsync -avz [email protected]:/usr/include sysroot/usr
rsync -avz [email protected]:/usr/lib sysroot/usr
rsync -avz [email protected]:/opt/vc sysroot/opt
2. 新建树莓派QT demo程序
在pro文件中加入:
INCLUDEPATH += /home/ubuntu/raspi/sysroot/usr/local/include
LIBS += -L/home/galaxy/raspi/sysroot/usr/local/lib -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswscale -lswresample
在调用的文件中添加头文件:
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavdevice/avdevice.h>
#include <libavformat/version.h>
#include <libavutil/time.h>
#include <libavutil/mathematics.h>
}
即可。
参考以下博客:
https://trac.ffmpeg.org/wiki/CompilationGuide/RaspberryPi