FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

合集 - FFmpeg开发实战(61)

1.FFmpeg开发笔记(一)搭建Linux系统的开发环境2023-04-162.FFmpeg开发笔记(二)搭建Windows系统的开发环境2023-04-293.FFmpeg开发笔记(三)FFmpeg的可执行程序介绍2024-03-094.FFmpeg开发笔记(四)FFmpeg的动态链接库介绍2024-03-105.FFmpeg开发笔记(五)更新MSYS的密钥环2024-03-166.FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码2024-03-177.FFmpeg开发笔记(九)Linux交叉编译Android的x265库2024-03-308.FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr2024-03-319.FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr2024-04-05

10.FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg2024-03-23

11.FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库2024-03-2412.FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx2024-04-0613.FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx2024-04-1314.FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存2024-04-1415.FFmpeg开发笔记(十五)详解MediaMTX的推拉流2024-04-2016.FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库2024-04-2117.FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass2024-04-2718.FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放2024-05-0419.FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频2024-05-0520.FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器2024-05-1221.FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器2024-05-1822.FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比2024-05-1923.FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流2024-05-2624.FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器2024-05-2725.FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp2024-06-0126.FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流2024-06-0227.FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题2024-06-0828.FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid2024-06-0929.FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid2024-06-1530.FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧2024-06-1631.FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流2024-06-2232.FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo2024-06-2333.FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作2024-06-2934.FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist2024-06-3035.FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt2024-07-0636.FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流2024-07-0737.FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)2024-06-1738.FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作2024-07-1339.FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址2024-07-1440.FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg2024-07-2041.FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流2024-07-2142.FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流2024-07-2743.FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务2024-07-2844.FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务2024-08-0345.FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP2024-08-0446.FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流2024-08-1047.FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo2024-08-1148.FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向2024-08-1749.FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构2024-08-1850.FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP2024-08-3151.FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生2024-09-0152.FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架2024-09-0753.FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer2024-09-0854.FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher2024-09-2155.FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播2024-09-2256.FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势2024-10-1257.FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频2024-10-1358.FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件2024-10-1659.FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频2024-10-1960.FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库2024-10-2361.FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频2024-10-26

收起

FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

一、在CentOS上编译安装FFmpeg

以常见的CentOS为例,FFmpeg的编译说明页面为https://trac.ffmpeg.org/wiki/CompilationGuide/Centos,这里给出了在CentOS上编译安装FFmpeg的详细步骤。

1、安装工具包

根据FFmpeg官网的说明,首先要通过yum安装下列工具:

mipsasm 复制代码
yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel

接着创建名叫ffmpeg_sources的目录:

bash 复制代码
mkdir ~/ffmpeg_sources

2、安装NASM

某些库使用的汇编程序。强烈建议使用,否则生成的版本可能会非常缓慢。

NASM的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2
tar xjvf nasm-2.15.05.tar.bz2
cd nasm-2.15.05
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

3、安装Yasm

某些库使用的汇编程序。强烈建议使用,否则生成的版本可能会非常缓慢。

Yasm的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

4、安装libx264

H.264视频编码器。libx264依赖nasm-2.13以上版本。需要FFmpeg增加配置选项" --enable-gpl --enable-libx264"。

libx264的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install

5、安装libx265

H.265/HEVC视频编码器。需要FFmpeg增加配置选项" --enable-gpl --enable-libx265"。

libx265的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git
cd ~/ffmpeg_sources/x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install

6、安装libfdk_aac

AAC音频编码器。需要FFmpeg增加配置选项" --enable-nonfree --enable-libfdk_aac"。

libfdk_aac的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

7、安装libmp3lame

MP3音频编码器。需要FFmpeg增加配置选项" --enable-libmp3lame"。

libmp3lame的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install

8、安装libopus

Opus音频解码器和编码器。需要FFmpeg增加配置选项" --enable-libopus"。

libopus的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar xzvf opus-1.3.1.tar.gz
cd opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

9、安装libvpx

VP8/VP9视频编码器和解码器。需要FFmpeg增加配置选项" --enable-libvpx"。

libvpx的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install

10、安装FFmpeg

FFmpeg的编译和安装命令如下:

bash 复制代码
cd ~/ffmpeg_sources
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs=-lpthread \
  --extra-libs=-lm \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libfdk_aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
make
make install
hash -d ffmpeg

二、在EulerOS(欧拉系统)上编译安装FFmpeg

欧拉系统是国内自主研发的服务器操作系统,截止2023年底,欧拉在服务器操作系统市场份额达36.8%。EulerOS基于CentOS的源码开发,运行环境兼容CentOS,国内的华为云、天翼云、移动云、联通云均采用欧拉系统。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

1、安装工具包

经实测,在欧拉系统上需要通过yum安装下列工具:

mipsasm 复制代码
yum install nasm g++ openssl-devel curl-devel cmake git

2、安装x264

到这个网址下载最新的x264源码包https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.gz,将下载好的压缩包上传到欧拉服务器并解压,再执行下面的编译和安装命令:

css 复制代码
./configure --enable-shared --enable-static
make
make install

3、安装x265

到这个网址下载最新的x265源码包https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz,将下载好的压缩包上传到欧拉服务器并解压,再执行下面的编译和安装命令:

bash 复制代码
cd build
cmake ../source
make
make install

4、安装FFmpeg

到这个网址下载最新的FFmpeg源码包https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n5.1.2.tar.gz,将下载好的压缩包上传到欧拉服务器并解压,再执行下面的编译和安装命令:

javascript 复制代码
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-iconv --enable-gpl --enable-nonfree
make
make install

安装完毕,运行以下命令查看FFmpeg的版本信息。

undefined 复制代码
ffmpeg -version

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

相关推荐
大筒木老辈子1 小时前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso1 小时前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
我爱挣钱我也要早睡!4 小时前
Java 复习笔记
java·开发语言·笔记
汇能感知9 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun9 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao9 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾9 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT10 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J10 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
Suckerbin11 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全