ffmpeg源码在centos上的编译

1.编译说明

  • 本次编译会在你的用户根目录下生成三个文件夹:ffmpeg_sources、ffmpeg_build、bin,其中ffmpeg_source为源代码目录,ffmpeg_build目录为项目编译目录,编译产出的库文件在这里,bin文件夹为编译产出的可执行文件存放目录。
  • 本次编译产出的ffmpeg库为静态库,编译完成后,位于ffmpeg_build/lib目录下。

2.编译环境

  • 阿里云ecs服务器
  • 操作系统:centos7.6

如果是新装的系统,并新建的账号,需要为新建的账号赋予写权限,将账号加入到sudoers文件。

同时在~目录下创建三个目录:

ffmpeg_sources、ffmpeg_build、bin

3.编译

3.1安装依赖

命令行:

sudo yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel

运行命令

到这里依赖就安装成功了,接下来开始安装ffmpeg的依赖库。

3.2 nasm安装

命令行:

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

3.3 yasm安装

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

3.4 libx264安装

cd ~/ffmpeg_sources
git clone --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

 

3.5 libx265安装

cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install

下载、编译略慢。

3.6 libfdk_aac安装

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

3.7 libmp3lame安装

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

3.8 libopus安装

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

3.9 libvpx安装

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

命令行中好像无法下载源代码。网上找一下吧,不能插入附件,也不能把握下载的放上来。

3.10 ffmpeg编译安装

由于在centos上libx265没有编译通过,因此在ffmpeg编译配置上取消了编译x265库。

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-nonfree
make
make install
hash -d ffmpeg

编译完成后,会生成各种库:

如果要支持硬件加速,即通过显卡对视频编解码/转换等进行加速,配置命令需要作如下改动(前提:安装cuda开发套件以及ffnvcodec,可以参考这篇文档:点击跳转

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-cflags=-I/usr/local/cuda/include \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-ldflags=-L/usr/local/cuda/lib64 \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-gnutls \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvpx \
  --enable-libx264 \
  --enable-shared \
  --enable-cuda-sdk \
  --enable-cuvid \
  --enable-nvenc \
  --enable-libnpp \
  --enable-nonfree && \
PATH="$HOME/bin:$PATH" make -j10 && \
make install && \
hash -r

编译完成后,最好执行以下命令:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
以能够链接最新安装的cuda 

4.验证

ffmpeg库编译完成后,写了示例代码验证库是否可用。

代码在这里:https://github.com/liupengh3c/richffmpeg,代码下载后,进入build目录,执行:

cmake ..

make

下载后,要修改一下根目录下的CMakeLists.txt,将lib库的目录修改成自己的库目录。要修改的代码在L12。

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

# 项目信息
project (richffmpeg)

#去哪里找头文件 相当于-I(i的大写字母)参数
include_directories(${PROJECT_SOURCE_DIR}/include)

# 链接第三方库
# 去哪里找库文件 .so相当于gcc 中的-L参数
set(LINK_DIR /home/liupeng/ffmpeg_build/lib)
link_directories(${LINK_DIR})

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 添加 lib 子目录
add_subdirectory(unpacker)

# 指定生成目标
add_executable(richffmpeg ${DIR_SRCS})
target_link_libraries(richffmpeg avdevice avfilter postproc avformat avcodec avutil stdc++ rt x264 dl vpx pthread opus mp3lame fdk-aac freetype z swresample swscale avutil m bz2 unpacker)

#target_link_libraries(richffmpeg avdevice avfilter postproc avformat avcodec avutil stdc++ X11 xcb-shm xcb-xfixes xcb-render xcb-shape xcb Xau Xdmcp asound pulse-simple pulse Xext rt x264 dl vpx pthread vorbisenc vorbis ogg opus mp3lame fdk-aac ass harfbuzz fontconfig fribidi expat freetype x265 numa z swresample swscale avutil m  vdpau va va-drm va-x11 unpacker)

编译完成后,通过命令行:./richffmpeg standar test.mp4,从mp4文件中解封装出h264编码的图像数据、aac编码的音频数据。

x265库没有编译成功,因此ffmpeg中也没有编译x265。

参考:https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

致敬雷神:https://blog.csdn.net/leixiaohua1020/article/details/39767055

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值