FFmpeg源码编译安装和基本使用 - CentOS系统


环境信息

操作系统:CentOS 7.9
ffmpeg源码编译安装版本:6.0

下面介绍yum和源码编译两种安装方式, 根据情况选择一种即可


安装

yum安装

# 安装依赖
$ yum install -y epel-release
$ yum install -y autoconf \
    automake \
    bzip2 \
    bzip2-devel \
    cmake \
    freetype-devel \
    gcc \
    gcc-c++ \
    git \
    libtool \
    make \
    pkgconfig \
    zlib-devel

$ rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
$ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

# 执行安装
$ yum install -y ffmpeg ffmpeg-devel

# 验证
$ ffmpeg -version

源码编译安装

更新环境变量
echo "PATH=\$PATH:/usr/local/ffmpeg/bin" >  /etc/profile.d/ffmpeg.sh
source /etc/profile.d/ffmpeg.sh
安装编译依赖
yum install -y
  autoconf \
  automake \
  bzip2 \
  bzip2-devel \
  cmake \
  freetype-devel \
  gcc \
  gcc-c++ \
  git \
  libtool \
  make \
  pkgconfig \
  zlib-devel


cd /usr/local/src
mkdir ffmpeg_sources
安装 nasm
cd /usr/local/src/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
./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin"
make && make install
安装 yasm
cd /usr/local/src/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="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin"
make && make install
安装 x264
cd /usr/local/src/ffmpeg_sources
git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git

cd x264
PKG_CONFIG_PATH="/usr/local/ffmpeg/lib/pkgconfig" ./configure --prefix="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin" --enable-static
make && make install
安装 x265
cd /usr/local/src/ffmpeg_sources
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git

cd x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/usr/local/ffmpeg" -DENABLE_SHARED:bool=off ../../source
make && make install
安装 libfdk_aac
cd /usr/local/src/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac

cd fdk-aac
autoreconf -fiv
./configure --prefix="/usr/local/ffmpeg" --disable-shared

make && make install
安装 libmp3lame
cd /usr/local/src/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="/usr/local/ffmpeg" --bindir="/usr/local/ffmpeg/bin" --disable-shared --enable-nasm

make && make install
安装 libopus
cd /usr/local/src/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="/usr/local/ffmpeg" --disable-shared

make && make install
安装 libvpx
cd /usr/local/src/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git

cd libvpx
./configure --prefix="/usr/local/ffmpeg" \
  --disable-examples \
  --disable-unit-tests \
  --enable-vp9-highbitdepth \
  --as=yasm
  
make && make install
安装 FFmpeg
cd /usr/local/src/ffmpeg_sources
curl -O -L http://ffmpeg.org/releases/ffmpeg-6.0.tar.gz
tar -zxvf ffmpeg-6.0.tar.gz

cd ffmpeg-6.0
PATH="/usr/local/ffmpeg/bin:$PATH" PKG_CONFIG_PATH="/usr/local/ffmpeg/lib/pkgconfig" ./configure \
  --prefix="/usr/local/ffmpeg" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I/usr/local/ffmpeg/include" \
  --extra-ldflags="-L/usr/local/ffmpeg/lib" \
  --extra-libs=-lpthread \
  --extra-libs=-lm \
  --bindir="/usr/local/ffmpeg/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


echo 'PATH=$PATH:/usr/local/ffmpeg/bin' >  /etc/profile.d/ffmpeg.sh
source /etc/profile

简单使用

检测视频分辨率

# 检测视频 10S.mp4 的分辨率
$ ffprobe -v error \
    -select_streams v:0 \
    -show_entries stream=width,height \
    -of csv=s=x:p=0 \
    10S.mp4 

576x1024

生成视频缩略图

# 10S.mp4 为输入的视频,00:00:01 表示从视频第一秒处获取缩略图,10S_thumbnail.jpg 为输出的缩略图
$ ffmpeg -i 10S.mp4 \
    -ss 00:00:01 \
    -vframes 1 \
    10S_thumbnail.jpg

提取视频音频

# 10S.mp4替换成自己的视频文件路径,10S.m4a是生成后的音频文件
$ ffmpeg -i 10S.mp4 -vn -acodec copy 10S.m4a

视频拆分成多张带序号的图片

  • 拆分时指定帧速率
# 指定帧速率为5, %03d 3位占位符 001-050
ffmpeg -i 10S.mp4 -vf "fps=5" %03d.png
  • 拆分时指定帧速率和分辨率
# 指定分辨率为512x288 (宽x高)
$ ffmpeg -i 10S.mp4 -vf "fps=5,scale=512:288" %03d.png

多张视频带序号的图片合成视频

# %03d.png 为输入的图片, 10S.m4a 为输入的音频,new_10S.mp4为最后合成的视频
ffmpeg -r 5 \
      -i %03d.png \
      -i 10S.m4a \
      -c:v libx264 \
      -vf "fps=5" \
      -pix_fmt yuv420p \
      -c:a aac \
      -strict experimental \
      -b:a 192k \
      -shortest \
      new_10S.mp4

2段视频左右拼接

# 10S_1.mp4、10S_2.mp4为两个输入视频,lr_10S.mp4为左右拼接后的视频
$ ffmpeg -i 10S_1.mp4 \
    -i 10S_2.mp4 \
    -filter_complex [0:v][1:v]hstack  \
    lr_10S.mp4

2段视频上下拼接

# 10S_1.mp4、10S_2.mp4为两个输入视频,ud_10S.mp4为上下拼接后的视频
$ ffmpeg -i 10S_1.mp4 \
    -i 10S_2.mp4 \
    -filter_complex [0:v][1:v]vstack  \
    ud_10S.mp4
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值