时间:2024-01-28 作者:魏文应
本镜像包含了FFmpeg编译环境,ubuntu20.04LTS amd64架构,使用下面命令启动当前镜像:
docker run -it --network host --name ffmpeg nuvic/ffmpeg-compile:v1.0-ffmpeg6.1-ubuntu20.04-amd64 /bin/bash
docker run -it --network host --name ffmpeg-compile ubuntu:20.04 /bin/bash
通过ffmpeg官方安装教程 进行安装:
apt update
apt install -y vim curl
安装依赖前,请确保你可以科学上网,有些源代码安装,需要代理。这里我使用 tsocks 工具,首先安装 tsocks 工具:
apt install tsocks
sudo vim /etc/tsocks.conf,配置 tsocks :
# 如果提示下面错误,这是子网掩码设置错误导致的,255.255.255.0改为255.255.0.0即可:
# libtsocks(1845): SOCKS server 192.168.10.67 (192.168.10.67) is not on a local subnet!
# 子网掩码
local = 192.168.0.0/255.255.0.0
local = 10.0.0.0/255.0.0.0
path {
reaches = 150.0.0.0/255.255.0.0
reaches = 150.1.0.0:80/255.255.0.0
server = 10.1.7.25
server_type = 5
default_user = delius
default_pass = hello
}
# 你的代理服务器的ip地址
server = 192.168.10.232
# socks5协议
server_type = 5
# 代理服务器的端口
server_port = 10808
设置完成后,在命令前面,加上 tsocks ,比如:
# tsocks 任意Linux命令
# tsocks wget 一个被墙的链接
# tsocks wget https://www.dropbox.com/s/4j4z58wuv8o0mfz/models.zip
# tsocks curl 一个被墙的网站
tsocks curl www.google.com
apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
meson \
ninja-build \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev
apt install libunistring-dev libaom-dev
apt-get install -y libx264-dev
apt-get install -y libx265-dev libnuma-dev
apt-get install -y libvpx-dev
apt-get install -y libfdk-aac-dev
apt-get install -y libopus-dev
需要通过源代码方式,安装libaom:
cd ~/ffmpeg_sources && \
git -C aom pull 2> /dev/null || tsocks 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_TESTS=OFF -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make && \
make install
通过源代码方式安装:
cd ~/ffmpeg_sources && \
git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git && \
mkdir -p SVT-AV1/build && \
cd SVT-AV1/build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \
PATH="$HOME/bin:$PATH" make && \
make install
在ubuntu20.04LTS,通过编译安装dav1d源代码的安装方式,安装 libdav1d-dev:
# E: Unable to locate package libdav1d-dev
# 安装Meson:https://mesonbuild.com/Quick-guide.html#installation-using-package-manager
apt-get install python3 python3-pip python3-setuptools python3-wheel ninja-build
# 安装ninja
apt-get -y install ninja-build
# 安装nasm
apt-get -y install nasm
# 下载dav1d
git clone https://code.videolan.org/videolan/dav1d.git && cd dav1d
# 下载测试数据
git clone https://code.videolan.org/videolan/dav1d-test-data.git tests/dav1d-test-data
mkdir build && cd build
# 配置
meson setup ..
# 编译
ninja
# 测试
meson test -v
# 安装
ninja install
安装无误显示结果如下:
[1/9] Generating vcs_version.h with a custom command.
checkasm: reference functions unavailable, reconfigure using '-Dtrim_dsp=false'
1/6 dav1d:checkasm / checkasm OK 0.01 s
2/6 dav1d:headers / common.h_test OK 0.01 s
3/6 dav1d:headers / data.h_test OK 0.01 s
4/6 dav1d:headers / dav1d.h_test OK 0.01 s
5/6 dav1d:headers / headers.h_test OK 0.01 s
6/6 dav1d:headers / picture.h_test OK 0.01 s
Ok: 6
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0
cd ~/ffmpeg_sources && \
tsocks wget https://github.com/Netflix/vmaf/archive/v2.3.1.tar.gz && \
tar xvf v2.3.1.tar.gz && \
mkdir -p vmaf-2.3.1/libvmaf/build &&\
cd vmaf-2.3.1/libvmaf/build && \
meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static .. --prefix "$HOME/ffmpeg_build" --bindir="$HOME/ffmpeg_build/bin" --libdir="$HOME/ffmpeg_build/lib" && \
ninja && \
ninja install
安装完上述依赖后,直接安装ffmpeg:
# 可以到官网https://ffmpeg.org/releases/,选择你需要版本,替换下面的:
# https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
cd ~/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" \
--ld="g++" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-gnutls \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libsvtav1 \
--enable-libdav1d \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libvmaf \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make -j32 && \
make install && \
hash -r
编译成功后,输出到 /root/bin :
ffmpeg ffplay ffprobe
执行:
/root/bin/ffmpeg -version
打印结果类似如下,表明ffmpeg正常:
ffmpeg version N-113425-gac06190a5a Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/root/bin --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libvmaf --enable-nonfree
libavutil 58. 36.101 / 58. 36.101
libavcodec 60. 38.100 / 60. 38.100
libavformat 60. 20.100 / 60. 20.100
libavdevice 60. 4.100 / 60. 4.100
libavfilter 9. 17.100 / 9. 17.100
libswscale 7. 6.100 / 7. 6.100
libswresample 4. 13.100 / 4. 13.100
libpostproc 57. 4.100 / 57. 4.100
docker commit ffmpeg-compile nuvic/ffmpeg-compile:v1.0-ffmpeg6.1-ubuntu20.04-amd64
docker run -it --network host --name ffmpeg nuvic/ffmpeg-compile:v1.0-ffmpeg6.1-ubuntu20.04-amd64 /bin/bash
Content type
Image
Digest
sha256:5c23743ad…
Size
1.1 GB
Last updated
over 2 years ago
docker pull nuvic/ffmpeg-compile:v1.0-ffmpeg6.1-ubuntu20.04-amd64