ubuntu FFmpeg 开发环境搭建
VMware Fusion 虚拟机安装
mac(intel)、ubuntu18.04、ffmpeg4.2.1
安装虚拟机、ubuntu系统:
-
首次打开 VMware Fusion 时,会直接显示新建虚拟机的窗口;
-
将下载好的ubuntu-18.04.6-desktop-amd64.iso.镜像拖进去,点击下一步;
-
Linux快捷安装,继续后直接点击完成。
-
配置ubuntu硬盘、内存、存储(注意先关闭ubuntu电源),配置完成后再启动ubuntu系统;
注意:偶尔打不开系统后,可以选择重新启动电源。
到这里,mac环境下使用ubuntu基本可以了
配置、下载、编译 FFmpeg
环境配置
创建目录
在home目录下创建
ffmpeg_sources:FFmpeg 源码
ffmpeg_build:编译后的库文件
bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265,SDL等)
cd ~
mkdir ffmpeg_sources ffmpeg_build bin
安装依赖
更新 Ubuntu 操作系统中软件包列表
sudo apt-get update
安装需要的组件
sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git \
libass-dev \
libfreetype6-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
pkg-config \
texinfo \
wget \
zlib1g-dev
-
autoconf
- 一个工具集,用于根据宏定义和模板文件自动生成软件包的配置脚本 automake
- 一个用于生成 Makefile 的工具,它通常与 autoconf 配合使用,用于简化跨平台软件包的构建过程 build-essential
- 一个针对 Ubuntu 和其他基于 Debian 的 Linux 发行版的软件包。它提供了一组基本的软件包和工具,用于构建(编译和链接)软件包的源代码。这些工具包括编译器、标准 C 库、头文件以及构建软件包所需的其他工具和库 cmake
- 一个跨平台的开源构建系统,用于管理软件项目的构建过程。与传统的基于 Makefile 的构建系统相比,CMake 提供了更简洁、更高层次的描述方式,使得项目的构建配置更加清晰和易于维护 git
- 一个分布式版本控制系统,它广泛用于跟踪和管理软件开发过程中的代码变化 libass-dev
- 一个开发库,用于在 Linux 系统上开发支持字幕渲染的应用程序。它是 libass(Advanced Substation Alpha/Substation Alpha)库的开发包,提供了在应用程序中使用 libass 所需的头文件和静态库文件 libfreetype6-dev
- 用于开发的 FreeType 2 字体渲染引擎的开发包。FreeType 2 是一个开源的字体渲染引擎,用于呈现字体文件中的字形。它提供了一套 API,使得开发者可以在其应用程序中以各种方式操作字形,包括加载字体文件、渲染文本、获取字形信息等 libsdl2-dev
- 用于开发的 SDL 2(Simple DirectMedia Layer 2)的开发包。SDL 2 是一个跨平台的多媒体库,提供了对图形、音频、输入设备和其他外设的简单统一访问。 libtool
- 一个用于创建可移植库的工具,它可以隐藏不同操作系统之间的库创建和使用的差异性,从而使开发人员能够更轻松地编写跨平台的代码。 libva-dev
- 用于开发的 Video Acceleration API(VA-API)的开发包。VA-API 是一个开放标准的多媒体编解码加速 API,用于提高视频处理应用程序在硬件加速支持的系统上的性能和效率 libvdpau-dev
- 用于开发的 Video Decode and Presentation API for Unix(VDPAU)的开发包。VDPAU 是一个用于多媒体编解码和呈现的 API,旨在提高视频处理应用程序在支持硬件加速的系统上的性能和效率。 libvorbis-dev
- 用于开发的 Vorbis 音频编解码库的开发包。Vorbis 是一个开放的音频编解码器,用于压缩和解压缩音频数据。它通常与 Ogg 容器格式一起使用,用于创建和播放高质量的音频文件 libxcb1-dev
- 用于开发的 X C Binding(XCB)库的开发包。XCB 是 X Window System 的下一代通信协议库,用于客户端和 X 服务器之间的通信 libxcb-shm0-dev
- 用于开发的 XCB Shared Memory Extension 库的开发包。XCB Shared Memory Extension 允许 X 窗口系统中的客户端之间共享内存,从而提高图形数据的传输效率 libxcb-xfixes0-dev
- 用于开发的 XCB XFIXES Extension 库的开发包。XCB XFIXES Extension 提供了对 X 窗口系统中窗口修复操作的支持,包括鼠标光标形状的隐藏和显示、窗口区域的修复等。 pkg-config
- 一个用于管理编译和链接时依赖的工具,它通常用于自动检测和配置软件包的编译选项 texinfo
- 一个用于创建和处理 Texinfo 文档的工具集 wget
- 一个用于从网络上下载文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 协议,可以下载单个文件、递归下载整个网站以及断点续传等功能 zlib1g-dev
- 用于开发的 zlib 库的开发包。zlib 是一个流行的压缩库,用于在许多应用程序中对数据进行压缩和解压缩操作,它广泛用于文件压缩、网络通信和数据存储等领域
FFMpeg依赖库安装
sudo apt install -y nasm \
yasm \
libx264-dev \
libx265-dev \
libnuma-dev \
libvpx-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopus-dev
-
nasm
- 是一个汇编语言编译器,常用于编写和优化汇编语言代码 yasm
- 一个汇编语言编译器,也用于编写和优化汇编语言代码。与 NASM 不同,Yasm 具有更广泛的支持和更多的功能 libx264-dev
- H.264 视频编码器的开发包,用于开发支持 H.264 编码的应用程序 libx265-dev
- H.265/HEVC 视频编码器的开发包,用于开发支持 H.265/HEVC 编码的应用程序 libnuma-dev
- 用于开发支持 NUMA 架构的应用程序,通常在多处理器系统中使用 libvpx-dev
- VP8 和 VP9 视频编解码器的开发包,用于开发支持 VP8 和 VP9 编解码的应用程序 libfdk-aac-dev
- AAC 编解码库的开发包,用于开发支持 AAC 编解码的应用程序 libmp3lame-dev
- LAME MP3 编码库的开发包,用于开发支持 MP3 编码的应用程序 libopus-dev
- Opus 音频编解码器的开发包,用于开发支持 Opus 编解码的应用程序
FFMpeg编译与安装
cd ~/ffmpeg_sources
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2
tar xjvf ffmpeg-4.2.1.tar.bz2
cd ffmpeg-4.2.1
PATH="$HOME/bin:$PATH"
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
CFLAGS="-O3 -fPIC"
./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 -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-pic \
--enable-shared \
--enable-postproc \
--enable-nonfree
PATH="$HOME/bin:$PATH"
make -j4
make install
hash -r
关闭当前窗口,然后重新打开,使用ffmpeg -version测试,如果打印正常,则安装完成。
如果报错
ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
错误原因
ubuntu通过源码安装软件未进行环境变量配置,找不到启动路径
所以需要添加路径
- 执行命令:
sudo gedit /etc/ld.so.conf
- 打开文本后在其中加入ffmpeg lib 路径
/home/lhf/ffmpeg_build/lib
- 该路径获取方式
cd ~
cd ffmpeg_build/lib/
pwd
- 关闭文件,然后更新配置:
sudo ldconfig
- 查看版本号
ffmpeg -version
结束 !