Ubuntu下 ffmpeg安装(转载)

原文来自: https://blog.csdn.net/qq_40342400/article/details/129593621

FFmpeg介绍

音视频的广泛应用

  • 直播类:音视频会议(腾讯会议、Zoom)、娱乐直播(斗鱼、虎牙)

  • 音视频通话:QQ、微信

  • 网络视频:腾讯视频、爱奇艺

  • 短视频:抖音、快手

  • 视频监控:海康

  • 人工智能:人脸识别、智能音箱

    

概念

  FFMPEG全称为fast forward moving picture expert group,是领先的多媒体框架,提供了音视频的编码、解码、转码、封装、解封装、流、滤镜、播放等功能。几乎支持所有的音视频格式,高度可移植,跨平台:Linux、Mac、Windows等,采用LGPL\GPL发布。

  

影响范围

作为内核的播放器:暴风影音、QQ影音等

作为内核的转码工具:格式工厂等

  

提供的应用程序

  • ffmpeg:音视频转码、编解码工具
  • ffplay:音视频播放器
  • ffprobe:多媒体分析器(查看码流信息、帧率)
  • ffserver:多媒体实时广播流服务器

  

内部构成

  • AVCodec:编解码模块
  • AVFormat:封装模块
  • AVFilter:滤镜模块
  • AVUtil:基本工具模块
  • AVDevice:采集与渲染输入输出模块
  • swscale:视频图像转换模块
  • swresample:音频转换计算模块

  

  

环境安装

  • 前期准备

安装有Ubuntu系统的主机或者设备

一些相关软件包,已打包整理好。如需最新版可根据文中提示到官网下载。

  • 编译安装

创建安装目录 sudo mkdir -p /usr/local/ffmpeg/lib

解压源码 tar -jxf ffmpeg-4.3.2.tar.bz2

到指定ffmpeg目录进行配置 cd ffmpeg-4.3.2/

配置:会报错很多次,过程中需反复执行此步,下述皆简称 配置,注意这步要在ffmpeg-4.3.2下运行

./configure --prefix="/usr/local/ffmpeg/" \
--enable-gpl \
--enable-nonfree \
--enable-ffplay \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libx264 \
--enable-libx265 \
--enable-filter=delogo \
--enable-debug \
--disable-optimizations \
--enable-libspeex \
--enable-shared \
--enable-pthreads \
--enable-version3 \
--enable-hardcoded-tables \
--extra-ldflags=-L/usr/local/ffmpeg/lib

如果报错:C compiler test failed.
解决:

sudo apt install g++
sudo apt install gcc

报错 nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

解决:
sudo apt-get install yasm

配置

报错 ERROR: libfdk_aac not found

解决:
①官⽹下载fdk-aac源码:https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/
②解压fdk-aac:
tar -zxf fdk-aac-2.0.1.tar.gz
并到指定目录:
cd fdk-aac-2.0.1
③进行配置
./configure --prefix=/usr/local/ffmpeg --enable-shared
④源码编译再安装
make -j8
sudo make install
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig/

配置

如果依旧是  ERROR: libfdk_aac not found
可能是缺少pkg-config
解决方案:sudo apt install pkg-config 

报错 ERROR: libmp3lame >= 3.98.3 not found

解决:
①官⽹下载mp3lame源码:https://sourceforge.net/projects/lame/
②解压lame文件并到指定目录下
tar -zxf lame-3.100.tar.gz
cd lame-3.100/
③进行配置
./configure --prefix=/usr/local/ffmpeg --enable-shared
④编译及安装
make -j8
sudo make install

配置

报错 ERROR: speex not found using pkg-config

解决:
https://www.speex.org/downloads/   下载Speex Source Code
tar -zxf speex-1.2.0.tar.gz 
cd speex-1.2.0/
./configure --prefix=/usr/local/ffmpeg
make -j8
sudo make install

配置

报错 ERROR: libx264 not found

解决:
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar jxf x264-master.tar.bz2
./configure --prefix=/usr/local/ffmpeg/ --enable-shared --disable-asm
make -j8
sudo make install

配置

报错 ERROR: x265 not found using pkg-config

解决:
http://ftp.videolan.org/pub/videolan/x265/
tar -zxf x265_3.2.tar.gz 
cd x265_3.2/build/linux
sudo apt-get install cmake
./make-Makefiles.bash
make -j8
sudo make install

配置

如果没有报错再执行(ffmpeg目录下)

make -j8
sudo make install

============================================================

安装完成后,发现/usr/local/ffmpeg/bin目录下,没有ffplay等应用程序,需要安装SDL

解决:
tar -zxf SDL2-2.0.12.tar.gz
cd SDL2-2.0.12/
./configure --prefix=/usr/local/ffmpeg/ --enable-shared
make -j8
sudo make install

再重新运行"ffmpeg配置命令",重新编译安装ffmpeg,并

make -j8
sudo make install

会发现/usr/local/ffmpeg/bin目录下已经有ffmpeg、ffplay、ffprobe等应用程序。

============================================================

执行ffmpeg,错误提示:The program ‘ffmpeg’ is currently not installed.You can install it bytyping: sudo apt install ffmpeg

解决方法:
1、修改系统环境变量: sudo vim /etc/profile文件最后加上export PATH="/usr/local/ffmpeg/bin:$PATH"
2、soure /etc/profile
3、sudo vim /etc/ld.so.conf 文件最后加上 /usr/local/ffmpeg/lib
4、再执行命令 : sudo ldconfig

再运行ffmpeg命令有如下信息∶(还报错尝试重启机器)

ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: --prefix=/usr/local/ffmpeg/ --enable-gpl --enable-nonfree --enable-ffplay --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --extra-ldflags=-L/usr/local/ffmpeg/lib
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

============================================================

执行ffplay命令后,提示错误:Could not initialize SDL-No available video device(Did you set theDISPLAY variable?)

1、安装依赖包
sudo apt-get install libasound2-dev
sudo apt-get install libpulse-dev
sudo apt-get install libx11-dev
sudo apt-get install xorg-dev

2、重新编译安装SDL(cd SDL2-2.0.12/)
./configure --prefix=/usr/local/ffmpeg/ --enable-shared --enable-video-x11 --enable-x11-shared --enable-video-x11-vm
make -j8
sudo make install

3、重新配置、编译、安装ffmpeg,再运行ffplay命令,即可正常运行输入ffmpeg -version,得到如下信息,说明ffmpeg安装成功。
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
configuration: --prefix=/usr/local/ffmpeg/ --enable-gpl --enable-nonfree --enable-ffplay --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --extra-ldflags=-L/usr/local/ffmpeg/lib
libavutil      56. 51.100 / 56. 51.100
libavcodec     58. 91.100 / 58. 91.100
libavformat    58. 45.100 / 58. 45.100
libavdevice    58. 10.100 / 58. 10.100
libavfilter     7. 85.100 /  7. 85.100
libswscale      5.  7.100 /  5.  7.100
libswresample   3.  7.100 /  3.  7.100
libpostproc    55.  7.100 / 55.  7.100

  

最后测试一下ffplay testVideo.mkv(随便找个视频看是否可以播放成功)

Ubuntu下 ffmpeg安装(转载)_第1张图片

  

FFmpeg源码目录的介绍

FFmpeg支持的工具:

  • FFmpeg编码支持与定制:configure --help
  • FFmpeg编码器支持:configure --list-encoders
  • FFmpeg解码器支持:configure --list-decoders
  • FFmpeg封装支持:configure --list-muxers
  • FFmpeg解封装支持:configure --list-demuxers
  • FFmpeg通信协议支持:configure --list-protocols

当前环境支持的工具:

  • FFmpeg封装格式支持:ffmpeg -muxers / ffmpeg -demuxers / ffmpeg -formats
  • FFmpeg编码格式支持:ffmpeg -encoders / ffmpeg -codecs
  • FFmpeg解码格式支持:ffmpeg -decoders / ffmpeg -codecs
  • FFmpeg滤镜支持:ffmpeg -filters

  

FFmpeg音视频处理流程

Ubuntu下 ffmpeg安装(转载)_第2张图片

不同的封装格式就是用不同容器将不同排列方式的音频和视频流(帧)进行盛放。

编码的本质——压缩,像H264/H265/AAC这种可以理解为是压缩格式(编码格式)。

视频编码一定是有损的。

  

FFprobe工具介绍

  • 查看帮助信息:ffprobe --help

命令格式 : ffprobe [OPTIONS] [INPUT_FILE]

  • 查看多媒体数据包:ffprobe -show_packets -show_data testVideo.flv
  • 查看封装格式:ffprobe -show_format testVideo.flv
  • 查看视频文件的帧信息:ffprobe -show_frames testVideo.flv
  • 查看视频文件的流信息:ffprobe -show_streams testVideo.flv
  • 格式化显示:
    ffprobe -of json -show_format testVideo.flv
    ffprobe -print_format csv -show_packets out.mp4 > outMp4.csv

  

FFplay工具介绍

  • 查看帮助信息:ffplay --help

命令格式:ffplay [options] input_file

  • 播放本地流:ffplay -window_title "Testwindow" testVideo.flv
  • 播放网络流:ffplay http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8

你可能感兴趣的:(音视频开发,ffmpeg,ubuntu)