编译av1的库 libaom-av1
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 && \
make install
如果出现错误提示 Building from within the aom source tree is not supported. 不能直接在当前 aom源码内进行编译,可以额外新建一个目录重新进行cmake的构建就可以。
参考:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
FFmpeg编译
ffmpeg在configure配置的时候,添加 --enable-libaom 选项支持av1编解码库
--enable-libaom
测试av1
没有添加av1的时候,通过ffprobe分析av1码流,会无法识别出片源的编码格式
$ ffprobe ~/test_av1.webm
ffprobe version 2.4.3 Copyright (c) 2007-2014 the FFmpeg developers
built on Nov 14 2014 14:29:31 with gcc 4.7 (Debian 4.7.2-5)
configuration: --prefix=/home/install --enable-gpl --enable-libx264 --enable-libmp3lame --extra-libs=-ldl
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 4.101 / 56. 4.101
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 1.100 / 5. 1.100
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
[matroska,webm @ 0x34bc020] Unknown entry 0x73C5
Last message repeated 1 times
[matroska,webm @ 0x34bc020] Unknown/unsupported AVCodecID V_AV1.
[matroska,webm @ 0x34bc020] Could not find codec parameters for stream 0 (Video: none, 1920x1080): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, matroska,webm, from '/home/xubinbin.5808/media/test_av1.webm':
Metadata:
COMPATIBLE_BRANDS: isomiso2avc1mp41
MAJOR_BRAND : isom
MINOR_VERSION : 512
ENCODER : IDMmkvlib0.1
LANGUAGE : und
HANDLER_NAME : AudioHandler
Duration: 00:30:40.14, start: 0.000000, bitrate: 1934 kb/s
Stream #0:0: Video: none, 1920x1080, SAR 1:1 DAR 16:9, 50 fps, 50 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
Unsupported codec with id 0 for input stream 0
添加 libaom-av1 库后
# ./ffprobe /home/media/test_av1.webm
ffprobe version n4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
configuration: --prefix=../local --env='PKG_CONFIG_PATH=../local/lib/pkgconfig' --pkg-config-flags=--static --extra-ldexeflags=-static --disable-doc --disable-libxcb --enable-gpl --enable-version3 --enable-nonfree --enable-libx264 --enable-libfreetype --enable-libfdk-aac --enable-libwebp --enable-libaom --extra-libs='-lpthread -lm -lstdc++' --extra-cflags=-I../local/include --extra-ldflags=-L../local/lib
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[libaom-av1 @ 0x4951b40] 1.0.0-errata1-avif-226-g3cd9eec38
Input #0, matroska,webm, from '/home/media/test_av1.webm':
Metadata:
COMPATIBLE_BRANDS: isomiso2avc1mp41
MAJOR_BRAND : isom
MINOR_VERSION : 512
ENCODER : IDMmkvlib0.1
LANGUAGE : und
HANDLER_NAME : AudioHandler
Duration: 00:30:40.14, start: 0.000000, bitrate: 1934 kb/s
Stream #0:0: Video: av1 (Main), yuv420p(tv, bt709), 1920x1080, SAR 1:1 DAR 16:9, 50 fps, 50 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
[libaom-av1 @ 0x4954c00] 1.0.0-errata1-avif-226-g3cd9eec38
av1转码h264测试
./ffmpeg -t 10 -i /home/media/test_av1.webm -c:v libx264 -c:a libfdk_aac -f mp4 test.mp4 -y