Ubuntu 16.04 下编译 FFmpeg
Ubuntu 编译 FFMPEG 16.04
2023-06-13 09:15:59 时间
转载请以链接形式标明出处: 本文出自:103style的博客
创建相关文件夹
cd $HOME
mkdir ffmpeg_sources
mkdir ffmpeg_build
mkdir bin
安装依赖,安装报错请往下看。
sudo apt-get update -qq && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
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
如果出现类似下列打印信息:xxx:依赖: xxx 但是它将不会被安装
libass-dev : 依赖: libfontconfig1-dev 但是它将不会被安装
依赖: libharfbuzz-dev 但是它将不会被安装
解决办法:安装 aptitude
工具
sudo apt-get install aptitude
然后修改运行一下指令,
sudo apt-get update -qq && sudo aptitude -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
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
如果出现类似下面的报错
无法下载 http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages
无法发起与 dl.google.com:80 (2404:6800:4005:805::200e) 的连接 - connect (101: 网络不可达)
则使用Ubuntu国内镜像: 镜像地址
sudo chmod -R 777 /etc/apt/sources.list
gedit /etc/apt/sources.list
添加上面链接中的镜像地址到最后。
然后注释掉 /etc/apt/sources.list.d/google-chrome.list
中的源
sudo gedit /etc/apt/sources.list.d/google-chrome.list
修改为以下内容:
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
# deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
然后再次执行上面的命令。
安装其他依赖
- NASM
cd ~/ffmpeg_sources && \
wget 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 && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make -j4 && \
make install
- Yasm
cd ~/ffmpeg_sources && \
wget -O yasm-1.3.0.tar.gz 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 -j4 && \
make install
- libx264
cd ~/ffmpeg_sources && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
cd x264 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
- libx265
sudo apt-get install mercurial libnuma-dev && \
cd ~/ffmpeg_sources && \
if cd x265 2> /dev/null; then hg pull && hg update && cd ..; else hg clone https://bitbucket.org/multicoreware/x265; fi && \
cd x265/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
- libvpx
cd ~/ffmpeg_sources && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
cd libvpx && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
- libfdk-aac
cd ~/ffmpeg_sources && \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
cd fdk-aac && \
autoreconf -fiv && \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
make -j4 && \
make install
- libmp3lame
cd ~/ffmpeg_sources && \
wget -O lame-3.100.tar.gz 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 && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
- libopus
cd ~/ffmpeg_sources && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
make -j4 && \
make install
- libaom
cd ~/ffmpeg_sources && \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir -p aom_build && \
cd aom_build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
git无法连接的话, 笔者提供了这个 下载地址,或者打开这里 自己点击 Download
。
将下载的 aom.rar
复制到 之前创建的 ffmpeg_sources
目录,然后依次运行下面的命令:
cd $HOME/ffmpeg_sources
sudo apt-get install unrar
rar x aom.rar
mv aom1/ aom/
然后继续执行下面一串命令:
mkdir aom_build && \
cd aom_build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install
下载编译FFmpeg
执行以下命令:
cd $HOME/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 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 -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make -j4 && \
make install && \
hash -r
执行完毕会在 $HOME/bin
目录下生成对应的文件。
如果编译报错提示类似下面的信息:
libass-dev : 依赖: libfontconfig1-dev 但是它将不会被安装
依赖: libharfbuzz-dev 但是它将不会被安装
则执行以下命令
sudo aptitude install libass-dev
如果出现 y / n / q
类似的提示时,则按 n
找到一个全部降级的选项方案,然后按y
安装。
再次执行FFmpeg
的编译命令。
如果还有提示对应的包未安装的话,则继续用sudo aptitude install
安装对应的包。
以上
相关文章
- 在Ubuntu中安装pycharm社区版[通俗易懂]
- 在Ubuntu上使用FreeFileSync同步文件
- ubuntu mate18.04+树莓派4B+ROS安装详细教程
- Ubuntu安装和配置ssh
- Ubuntu安装VScode(搬运命令行)「建议收藏」
- ubuntu 卸载软件命令_卸载程序命令
- C++基础——Ubuntu下编写C++环境配置总结(C++基本简介、Ubuntu环境配置、编写简单C++例程)
- 在 Ubuntu 下编译 CyanogenMod7
- Docker容器的ubuntu镜像配置apt国内源
- Ubuntu Golang 编译 + Docker部署
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
- 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
- 【错误记录】Ubuntu 编译 ffmpeg 报错 ( nasm/yasm not found or too old. Use --disable-x86asm for a crippled bu )
- ubuntu 16.04安装redis的两种方式教程详解(apt和编译方式)
- 的发行版Ubuntu系统:开放源自Linux的新面貌(ubuntu是linux)
- 出错Ubuntu安装Linux失败记录(ubuntu装linux)
- Ubuntu下PHP动态编译出现Cannot find autoconf的解决方法详解编程语言
- Ubuntu下安装Tor for Linux的指南(torlinux安装)
- 的差异Linux与Ubuntu的异同之处(linux与ubuntu)
- ubuntu探索Ubuntu:Linux的强大分支(linux的分支)
- Ubuntu上安装MongoDB的快速指南(ubuntu安装mongodb)
- 之一ubuntu开启Ubuntu之门:探索Linux分支的新世界(linux的分支)
- Ubuntu 14.10(乌托邦独角兽)的每日构建镜像已可下载
- 在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件
- Ubuntu与Linux:共同打造更好的世界(ubuntu和linux)