文章目录
🌕交叉编译x264
python
git clone https://code.videolan.org/videolan/x264.git
cd x264
🌙创建build_x264.sh(放在下载的x264目录下)
python
#!/bin/bash
# 设置工具链路径
TOOLCHAIN_PATH=/bruce/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
GCC_COMPILER=${TOOLCHAIN_PATH}/bin/arm-linux-gnueabihf
# 设置x264安装路径
X264_INSTALL_DIR=/bruce/software/rv1126_install/x264
# 配置交叉编译选项,直接指定 C 和 C++ 编译器
./configure --prefix=${X264_INSTALL_DIR} \
--cross-prefix=${GCC_COMPILER}- \
--cc=${GCC_COMPILER}-gcc \
--cxx=${GCC_COMPILER}-g++ \
--host=arm-linux \
--enable-cross-compile \
--enable-shared \
--disable-static \
--enable-pic \
--extra-cflags="-g -I${TOOLCHAIN_PATH}/include" \
--extra-ldflags="-L${TOOLCHAIN_PATH}/lib"
# 编译并安装x264
make -j$(nproc)
make install
🌙编译过程

🌙查看编译后的so文件是否是arm版的
python
# 进入安装路径的lib
cd /bruce/software/rv1126_install/x264/lib

python
# 输入
file libx264.so.157

🌕下载编译ffmpeg
🌙下载ffmpeg
由于后续编译安装的是opencv-4.5.3,为了使ffmpeg 和opencv版本匹配,选择ffmpeg-4.1.3进行交叉编译安装。
下载FFmpeg源码
FFMPEG_VERSION=4.1.3
python
wget https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2
tar -xjf ffmpeg-${FFMPEG_VERSION}.tar.bz2
cd ffmpeg-${FFMPEG_VERSION}
🌙创建编译脚本
python
cd /bruce/software/source/ffmpeg-4.1.3
touch build_ffmpeg.sh
🌙创建ffmpeg编译路径
python
/bruce/software/rv1126_install/ffmpeg
🌙编写脚本内容
python
#!/bin/bash
# 设置工具链路径
TOOLCHAIN_PATH=/bruce/RV1126/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
GCC_COMPILER=${TOOLCHAIN_PATH}/bin/arm-linux-gnueabihf
# 设置x264安装路径
X264_INSTALL_DIR=/bruce/software/rv1126_install/x264
# 设置FFmpeg安装路径
FFMPEG_INSTALL_DIR=/bruce/software/rv1126_install/ffmpeg
# 配置交叉编译选项,直接指定 C 和 C++ 编译器
./configure --prefix=${FFMPEG_INSTALL_DIR} \
--cc=${GCC_COMPILER}-gcc \
--cxx=${GCC_COMPILER}-g++ \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-debug \
--disable-doc \
--enable-gpl \
--enable-libx264 \
--enable-pic \
--extra-cflags="-I${X264_INSTALL_DIR}/include -I${TOOLCHAIN_PATH}/include" \
--extra-ldflags="-L${X264_INSTALL_DIR}/lib -L${TOOLCHAIN_PATH}/lib" \
--strip=${GCC_COMPILER}-strip
# 编译并安装FFmpeg
make -j$(nproc)
make install
# 清理
# cd ..
# rm -rf ffmpeg-${FFMPEG_VERSION}
# rm ffmpeg-${FFMPEG_VERSION}.tar.bz2
echo "FFmpeg has been installed in ${FFMPEG_INSTALL_DIR}"
🌙验证是否编译成功
进入ffmpeg安装目录
cd uce/software/rv1126_install/ffmpeg/lib

验证得到的ffmpeg架构
python
file libavcodec.so.58.35.100

🌕交叉编译opencv4.5.3
opencv下载
可以去官网下载(或者采用git方法)opencv-4.5.3版本。
opencv_contrib下载
采用git方式下载opencv_contrib,后续需要进行一个版本验证。
python
#下载opencv_contrib
git clone https://github.com/opencv/opencv_contrib.git
python
#验证opencv_contrib对应的版本
git checkout 4.5.3
🌕注意事项
python
2025.1.23 编译带ffmpeg的Opencv一直失败
后来我退出docker,并把编译后的安装目录写为ffmpeg,而不是ffmpeg_4_5_3_rv1126,x264_rv1126。
然后就成功了。
在使用时可以在代码中添加如下代码,看看编译好的Opencv是否支持ffmpeg:
std::cout << "OpenCV FFmpeg support: " << cv::getBuildInformation() << std::endl;