麒麟os部署ffmpeg有五种方法:一、apt在线安装;二、离线.deb包安装;三、源码编译(支持h.264/h.265等自定义编码器);四、符号链接补全动态库路径;五、opencv联动配置确保视频解码正常。

如果您在麒麟操作系统上需要部署FFmpeg以支持视频转码、推流、裁剪等多媒体处理任务,但执行ffmpeg -version提示命令未找到或动态库加载失败,则很可能是由于缺少编译依赖、路径未纳入系统环境或共享库未正确链接。以下是针对麒麟OS(特别是银河麒麟V10)的多种可靠安装方法:
一、使用APT包管理器在线安装(推荐初学者)
该方法依赖麒麟OS官方源及适配的deb包,无需手动编译,适合网络通畅且对版本兼容性要求不苛刻的场景。系统会自动解决基础依赖关系。
1、更新软件包索引列表,确保获取最新可用包信息:
sudo apt update
2、执行FFmpeg及其核心开发库的一键安装:
sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev libavfilter-dev -y
3、验证是否安装成功:
ffmpeg -version
若输出包含版本号及编译配置信息,则表明已就绪;如提示command not found,请检查是否因系统为精简版而未启用multiverse源,需先运行:
sudo sed -i 's/main/main universe/g' /etc/apt/sources.list && sudo apt update
二、离线.deb包批量安装(适用于无网络的目标机)
该方法适用于生产环境隔离网络、内网服务器或安全策略禁止在线下载的场景。通过在联网机器预下载所有依赖包,再拷贝至目标机统一安装,可规避网络不可达导致的中断风险。
1、在同版本麒麟OS联网机器上执行下载命令,将FFmpeg及相关依赖缓存至本地:
sudo apt update && sudo apt install --download-only ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev libavfilter-dev
2、进入APT缓存目录并复制全部.deb文件至U盘:
cd /var/cache/apt/archives/ && cp *.deb /media/usb/ffmpeg-offline/
3、在目标麒麟OS机器插入U盘,进入对应路径后创建临时安装目录:
mkdir -p /tmp/ffmpeg-debs && cp /media/usb/ffmpeg-offline/*.deb /tmp/ffmpeg-debs/
4、切换至该目录并执行批量安装:
cd /tmp/ffmpeg-debs && sudo dpkg -i *.deb
5、若出现依赖未满足错误,立即运行修复命令:
sudo apt-get install -f
6、验证安装结果:
ffmpeg -version
若仍报错libavdevice.so.61: cannot open shared object file,说明部分动态库未被系统识别,需手动执行ldconfig刷新缓存:
sudo ldconfig
三、源码编译安装(推荐进阶用户,支持自定义编码器)
该方式可精确控制FFmpeg功能模块(如启用libx264、libfdk-aac、硬件加速等),适用于需H.264/H.265硬编解码、AI视频推理(RKNN协同)或与OpenCV深度集成的场景。需预先安装底层汇编器与编码库。
1、安装前置工具链与依赖库:
sudo apt install build-essential yasm nasm pkg-config libtool autoconf automake cmake -y
2、下载并编译NASM(避免configure阶段因汇编器缺失报错):
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.xz && tar -xf nasm-2.16.01.tar.xz && cd nasm-2.16.01 && ./configure && make -j$(nproc) && sudo make install
3、下载并编译x264(为启用H.264编码器):
git clone https://code.videolan.org/videolan/x264.git && cd x264 && ./configure --enable-shared --prefix=/usr/local && make -j$(nproc) && sudo make install
4、下载FFmpeg源码并配置编译选项:
wget https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz && tar -xf ffmpeg-6.1.1.tar.xz && cd ffmpeg-6.1.1 && ./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"
5、执行编译与安装:
make -j$(nproc) && sudo make install
6、配置系统级动态库路径:
echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf && sudo ldconfig
7、添加FFmpeg二进制路径至环境变量:
echo 'export PATH=$PATH:/usr/local/ffmpeg/bin' | sudo tee -a /etc/profile && source /etc/profile
8、验证最终安装状态:
/usr/local/ffmpeg/bin/ffmpeg -version
若输出中显示configuration: --enable-libx264 --enable-libx265,表示H.264/H.265编码器已成功启用。
四、符号链接补全法(专治“找不到so文件”类故障)
该方法用于修复已安装FFmpeg但运行时报“cannot open shared object file”错误的情形,本质是强制建立/usr/lib到/usr/local/ffmpeg/lib下各so文件的软链接,使系统加载器能定位到动态库。
1、确认FFmpeg安装路径下的lib目录存在且包含所需so文件:
ls /usr/local/ffmpeg/lib/ | grep -E "libavcodec|libavformat|libavutil"
2、依次为关键动态库创建全局符号链接:
sudo ln -sf /usr/local/ffmpeg/lib/libavcodec.so.61 /usr/lib/libavcodec.so.61
3、继续链接其余必要库:
sudo ln -sf /usr/local/ffmpeg/lib/libavformat.so.61 /usr/lib/libavformat.so.61
4、链接音视频工具链核心库:
sudo ln -sf /usr/local/ffmpeg/lib/libavutil.so.59 /usr/lib/libavutil.so.59
5、链接滤镜与重采样模块:
sudo ln -sf /usr/local/ffmpeg/lib/libavfilter.so.10 /usr/lib/libavfilter.so.10 && sudo ln -sf /usr/local/ffmpeg/lib/libswresample.so.5 /usr/lib/libswresample.so.5
6、刷新动态链接缓存以生效:
sudo ldconfig
7、再次运行验证命令:
ffmpeg -version
若仍提示某so文件缺失,可通过find /usr/local/ffmpeg/lib -name "lib*.so*"定位实际文件名,并按相同格式补全对应链接。
五、OpenCV联动配置(确保cv2.VideoCapture正常读取MP4)
该步骤专为需在Python中调用OpenCV进行视频帧处理的用户设计,解决OpenCV因未链接FFmpeg后端而导致无法解码MP4/H.265等格式的问题。
1、确认OpenCV已启用FFmpeg支持:
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep -A 5 "Video I/O"
2、若输出中显示FFMPEG: NO,说明OpenCV编译时未关联FFmpeg库,需重新编译OpenCV并显式指定路径。
3、创建OpenCV构建目录并执行CMake配置:
mkdir -p opencv-build && cd opencv-build && cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D OPENCV_DNN_CUDA=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D CMAKE_LIBRARY_PATH=/usr/local/ffmpeg/lib -D PKG_CONFIG_EXECUTABLE=/usr/bin/pkg-config ..
4、编译并安装OpenCV:
make -j$(nproc) && sudo make install
5、更新系统库缓存并验证:
sudo ldconfig && python3 -c "import cv2; cap = cv2.VideoCapture('test.mp4'); print(cap.isOpened())"
若返回True,表明OpenCV已成功通过FFmpeg后端打开MP4文件。









