【网络通信 -- 直播】FFMPEG -- FFMPEG 定制化编译指南

Ubuntu 环境下编译定制化的 FFMPEG 静态库

【1】安装所需的工具

apt-get install autoconf automake bzip2
apt-get install cmake gcc g++ git 
apt-get install libtool make mercurial

【2】编译安装 FFMPEG 编解码器插件库

tar jxvf nasm-2.14.tar.bz2
cd ./nasm-2.14/
./autogen.sh
./configure --prefix="$HOME/ffmpeg/lib" --bindir="$HOME/ffmpeg/lib/bin"
make
make install
 
将bin目录加入path路径中
打开~/.bashrc,在最后一行编辑
export PATH=$PATH:$HOME/ffmpeg/lib/bin/

tar xzvf yasm-1.3.0.tar.gz
cd ./yasm-1.3.0/
./configure --prefix="$HOME/ffmpeg/lib" --bindir="$HOME/ffmpeg/lib/bin"
make
make install


unzip x264-stable.zip
cd ./x264-stable/
PKG_CONFIG_PATH="$HOME/ffmpeg/lib/pkgconfig"
./configure --prefix="$HOME/ffmpeg/lib" --bindir="$HOME/ffmpeg/lib/bin" --enable-static 
make
make install

tar -zxvf fdk-aac-2.0.2.tar.gz
cd ./fdk-aac-2.0.2/
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg/lib" --disable-shared
make
make install

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/lib" --disable-shared
make
make install

【3】编译安装 FFMPEG

tar -zxvf FFmpeg-n4.2.3.tar.gz
cd ./FFmpeg-n4.2.3/
// 运行编译脚本
./build.static.sh

文章福利:收藏整理的ffmpeg资料包可以私【1】进群领取~

FFmpeg 教程_Ubuntu环境下编译定制化FFMPEG静态库_Windows环境下编译定制化FFMPEG静态库

另外分享一个免费的音视频流媒体课程,水平很高,可以免费学习,往期的课程回放都可以点击上方领取方式获取:【免费】

FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频教程-腾讯课堂

#!/bin/bash
 
PATH="$HOME/ffmpeg/lib/bin:$PATH"
PKG_CONFIG_PATH="$HOME/ffmpeg/lib/lib/pkgconfig"
./configure 
  --prefix="$HOME/ffmpeg/lib" 
  --pkg-config-flags="--static" 
  --extra-cflags="-I$HOME/ffmpeg/lib/include" 
  --extra-ldflags="-L$HOME/ffmpeg/lib/lib" 
  --extra-libs=-lpthread 
  --extra-libs=-lm 
  --bindir="$HOME/ffmpeg/lib/bin" 
  --enable-gpl 
  --enable-libfdk_aac 
  --enable-libopus 
  --enable-libx264 
  --enable-nonfree
  
make
make install

Windows 环境下编译定制化的 FFMPEG 静态库【1】安装配置 MSYS2

1.1 MSYS2 下载与配置

MSYS2 下载地址,MSYS2

MSYS2 安装完成之后,将安装目录下的 msys2_shell.cmd 中的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit,从而将 VS 的环境继承给 MSYS2

1.2 MSYS2 的 pacman 源配置

pacman 源配置文件路径如下图示

Windows环境下编译定制化FFMPEG静态库_Ubuntu环境下编译定制化FFMPEG静态库_FFmpeg 教程

编辑切换为居中

添加图片注释,不超过 140 字(可选)

/etc/pacman.d/mirrorlist.mingw32 文件开头添加
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
 
/etc/pacman.d/mirrorlist.mingw64 文件开头添加
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
 
/etc/pacman.d/mirrorlist.msys 文件开头添加
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/

基于 MSYS2 启动 mingw64
进入 MSYS2 安装目录
执行,msys2_shell.cmd -mingw64
 
MSYS2 窗口支持中文
窗⼝右键->Options->Text,然后locale选择:zh_CN,Character set 选择 UTF-8

【2】配置 MSYS2 编译环境

刷新软件包数据
pacman -Sy
 
安装基于 MinGW-W64 的工具链
pacman -S mingw-w64-x86_64-toolchain
 
安装 git
pacman -S git
 
安装 make 等工具
pacman -S make
pacman -S automake
pacman -S autoconf
pacman -S perl
pacman -S libtool
pacman -S mingw-w64-i686-cmake
pacman -S pkg-config
说明 : 如果需要编译出ffplayer的话,还需要安装SDL
pacman -S mingw-w64-x86_64-SDL2
 
安装 yasm
pacman -S yasm
 
安装 nasm
pacman -S nasm

重命名 link
重命名 msys64/usr/bin/link.exe 为 msys64/usr/bin/link.bak,避免和 MSVC 的 link.exe 抵触

which cl link yasm cpp

若出现图示信息的解决方案

Windows环境下编译定制化FFMPEG静态库_Ubuntu环境下编译定制化FFMPEG静态库_FFmpeg 教程

编辑切换为居中

添加图片注释,不超过 140 字(可选)

需要将 MSVC 的环境配置到环境变量 Path 中

新建系统环境变量
 
MSVC
D:Program Files (x86)Microsoft Visual Studio2019Professional
    VCToolsMSVC14.29.30133
 
配置到 Path 变量中
Path
%MSVC%binHostX64x64

成功则如下图所示

编辑切换为居中

添加图片注释,不超过 140 字(可选)

【3】编译安装 FFMPEG 编解码器插件库

获取 X264 源码
github : git clone http://git.videolan.org/git/x264.git
gitee : git clone https://gitee.com/mirrors_addons/x264.git
 
编译 X264 源码
./configure --prefix=/home/Admin/ffmpeg/build --host=x86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.def
make
make install
 
生成 libx264.lib
cp ./libx264.def /home/Admin/ffmpeg/build/lib/
cd /home/Admin/ffmpeg/build/lib
#若要生成 64 位 lib 文件则输入如下命令
lib /machine:X64 /def:libx264.def
#若要生成 32 位 lib 文件则输入如下命令
lib /machine:i386 /def:libx264.def
 
生成 libx264.dll
将 /home/Admin/ffmpeg/build/bin/libx264-161.dll (具体名字和 x264 版本有关) 复制为 libx264.dll

获取 libfdk_aac 源码
git clone --depth 1 https://gitee.com/mirrors/fdk-aac.git
 
编译 fdk-aac
./autogen.sh
./configure --prefix=/home/Admin/ffmpeg/build --enablestatic --enable-shared
make
make install

获取 libopus 源码
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar xzvf opus-1.3.1.tar.gz
 
编译 libopus
cd ./opus-1.3.1/
LDFLAGS="-lssp" ./configure --prefix=/home/Admin/ffmpeg/build --enable-static --enable-shared
make
make install

说明,在 configure 时需要加上 LDFLAGS="-lssp" 否则会出现图示错误

Ubuntu环境下编译定制化FFMPEG静态库_FFmpeg 教程_Windows环境下编译定制化FFMPEG静态库

编辑切换为居中

添加图片注释,不超过 140 字(可选)

【4】编译安装 FFMPEG

获取 FFMPEG 源码
github : git clone git://source.ffmpeg.org/ffmpeg.git
gitee : git clone https://gitee.com/mirrors/ffmpeg.git
cd ffmpeg
# 查看版本
git branch -a
# 选择 4.2.3 版本
git checkout remotes/origin/release/4.2

#!/bin/bash
 
PATH="$HOME/ffmpeg/build/bin:$PATH"
PKG_CONFIG_PATH="$HOME/ffmpeg/build/lib/pkgconfig"
./configure 
  --prefix="$HOME/ffmpeg/build" 
  --pkg-config-flags="--static" 
  --arch=x86_64 
  --extra-cflags="-I$HOME/ffmpeg/build/include" 
  --extra-ldflags="-L$HOME/ffmpeg/build/lib" 
  --extra-libs=-lpthread 
  --extra-libs=-lm 
  --bindir="$HOME/ffmpeg/build/bin" 
  --enable-gpl 
  --enable-libfdk_aac 
  --enable-libopus 
  --enable-libx264 
  --enable-nonfree

免责声明:本站为个人博客,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 访问和下载本站内容,说明您已同意上述条款。本站为非盈利性站点,VIP功能仅仅作为用户喜欢本站捐赠打赏功能,本站不贩卖软件,所有内容不作为商业行为。