前文介绍了在Linux环境给FFmpeg集成libopus和libvpx,接下来介绍如何在Windows环境给FFmpeg集成libopus和libvpx。 (1)到https://github.com/webmproject/libvpx/tags下载最新的libvpx源码,比如2023年9月发布的libvpx-1.13.1,该版本的源码下载地址是https 执行下面命令解压下载好的压缩包:tar zxvf libvpx-1.13.1.tar.gzcd libvpx-1.13.1(2)进入解压后的libvpx目录,运行下面命令配置libvpx。 libvpx。 make(4)编译完成后,运行下面命令安装libvpx。
其中Opus的编解码库为libopus,VP8和VP9的编解码库为libvpx。 (1)到https://github.com/webmproject/libvpx/tags下载最新的libvpx源码,比如2023年9月发布的libvpx-1.13.1,该版本的源码下载地址是https tar zxvf libvpx-1.13.1.tar.gzcd libvpx-1.13.1(2)进入解压后的libvpx目录,运行下面命令配置libvpx。 make(4)编译完成后,运行下面命令安装libvpx。 (1)回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用libopus和libvpx。(增加了选项--enable-libopus --enable-libvpx).
libvpx-VP9 免费视频编码器libvpx库由Google开发,可用作视频编码格式VP8和VP9来参照。 随着1.5和1.6的版本发布,使得libvpx-vp9可以在生产系统中为编码和解码提供了显着的提速。 AV1会尝试匹配x264和libvpx-vp9的编码设置。 图2.针对x264 main,x264 high和libvpx-vp9的CRF / QP模型的PSNR以AV1 BD码率节省 图3.针对x264 main,x264 high和libvpx-vp9的 图5.根据ABR模式的PSNR情况下x264 main,x264 high和libvpx-vp9的AV1 BD节省率 图6.针对ABR模式的SSIM情况下x264 main,x264 high和libvpx-vp9
[root@aniu-ops ffmpeg_sources]# git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git :443; Operation now in progress while accessing https://chromium.googlesource.com/webm/libvpx.git/info /refs fatal: HTTP request failed 参考:https://github.com/webmproject/libvpx 更换地址: git clone --depth 1 https://github.com/webmproject/libvpx.git # 编译libvpx报错 . 有问题,笔者使用 wget https://github.com/webmproject/libvpx/archive/v1.7.0.tar.gz 下载特定版本的libvpx,configure就没问题
/configure --prefix="$INSTALL_PATH" --disable-shared make make install # libvpx # VP8/VP9 video encoder . cd ~/ffmpeg_sources # git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git curl -O -L https://github.com/webmproject/libvpx/archive/v1.9.0/libvpx-1.9.0.tar.gz tar xzvf libvpx-1.9.0.tar.gz cd libvpx-1.9.0 . enable-libfdk_aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libvpx
libvpx是Google开发的视频编解码器VP8和VP9的开源软件实现库。 libvpx中包含了VP9视频编码算法,相比H.264/AVC,在高质量配置的2 pass编码模式下能提供40%多的 BD-rate增益。 这使得libvpx(VP9)在OTT(Over The Top)视频传输服务中潜力巨大。 然而,与H.264/AVC编码器相比,libvpx编码速度较慢,会产生较长的turnaround时间。 作为其中的部分改进,多线程优化应用于以下三个libvpx 2 pass编码模式中表现较差的情况。 1.
然后在CygWin环境下,切换到libvpx的目录下,运行configure . /libvpx-master/configure --target=x86-win32-vs16 --enable-static-msvcrt enabling static_msvcrt enabling /libvpx-master/vpx_dsp/vpx_dsp_rtcd_defs.pl ../libvpx-master/CHANGELOG .. /libvpx-master/vpx_scale/vpx_scale_rtcd.pl ../libvpx-master/vp8/common/rtcd_defs.pl .. /libvpx-master/vp9/common/vp9_rtcd_defs.pl ../libvpx-master/build/make/version.sh ..
码率控制方式 与x264类似,libvpx有1pass ABR,稳定质量,2pass ABR和带码率限制的稳定质量码控方法。 ? libvpx码率控制方法 在x264编码中,经常会使用带峰值码率限制的CRF。而在libvpx CRF模式下,编码器会尝试达到稳定图像质量,同时将平均比特率保持在比特率限制限制在目标值以下。 由于1pass CRF在x264中得到了广泛使用,因此一开始我们并没有尝试在libvpx中使用2pass CRF。然而,2pass CRF在libvpx中的性能比1pass CRF好得多。 因此libvpx1080p的编码速度成为了我们VOD服务的瓶颈。幸运的是,libvpx v1.7中引入了-row-mt选项,较之前版本有较大提升。 但是对于需要快速上线的视频内容来说,libvpx仍然不能满足我们的要求,因此我们需要GOP级别并行化来进一步加速。
我向其提交了libvpx、x265和SVT-AV1编码器的运行代码,其中前两个为现阶段适用最广泛的高质量编码。 在X轴上,码率以每个像素的位数表示。 image.png 在8-bit 视频“Sintel“上,Enc-mode 4比libvpx快32%而比x265慢4%。 同时,SVT-AV1比libvpx快6,42倍,比x265快4,68倍。 Enc-mode 6比libvpx快4.60倍,比x265快3.35倍。 而与libvpx相比其增益要更小一些,在实现相同的PSNR、MS-SSIM和VMAF质量下,平均码率分别降低了8.8%、9.0%和3.1%。
另外,像编译ffmpeg源代码所需要的一些解码库x264,x265,libvpx等软件源代码包的下载,可以直接从www.linuxfromscratch.org上面下载,如下图所示: ? ? ? /configure --prefix="$INSTALL_PATH" --disable-shared make make install # libvpx # VP8/VP9 video encoder . cd ~/ffmpeg_sources # git clone --depth 1 https://github.com/webmproject/libvpx.git curl -O -L https ://github.com/webmproject/libvpx/archive/v1.9.0/libvpx-1.9.0.tar.gz tar xzvf libvpx-1.9.0.tar.gz cd libvpx enable-libfdk_aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libvpx
--prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make make install 安装libvpx configure过不去,一直报错,解决如下: cd ~/ffmpeg_sources wget https://github.com/webmproject/libvpx/archive/v1.7.0 .tar.gz tar zxvf v1.7.0.tar.gz mv libvpx-1.7.0 libvpx cd libvpx . enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libvorbis \ --enable-libvpx
FreeSwitch 视频支持,需要特殊安装一些依赖 还有安装顺序问题 这里列出来 安装libyuv libvpx opus mod_av 等模块的代码 方便大家使用 环境: CentOS 6.x 64 /lib/pkgconfig/libyuv.pc /usr/lib64/pkgconfig/ yes|cp /usr/lib/libyuv.so /usr/lib64/ #bugfix :step2 libvpx cd /usr/local/src/freeswitch/libs rm -rf libvpx wget http://$URL/freeswitch/libvpx.zip unzip libvpx.zip cd libvpx .
/configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make clean libvpx sudo apt-get install libvpx-dev cd ~/ffmpeg_sources wget http://storage.googleapis.com/downloads.webmproject.org/ releases/webm/libvpx-1.6.1.tar.bz2 tar xjvf libvpx-1.6.1.tar.bz2 cd llibvpx-1.6.1 PATH="$HOME/bin:$PATH --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx
libsciter.dylib] 基本构建步骤 请准备好 Rust 开发环境和 C++ 编译环境 安装 vcpkg, 正确设置 VCPKG_ROOT 环境变量 Windows: vcpkg install libvpx libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static Linux/macOS: vcpkg install libvpx checkout 2023.04.15 cd .. vcpkg/bootstrap-vcpkg.sh export VCPKG_ROOT=$HOME/vcpkg vcpkg/vcpkg install libvpx libyuv opus aom 修复 libvpx (仅仅针对 Fedora) cd vcpkg/buildtrees/libvpx/src cd * . CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile make cp libvpx.a
/configure --enable-shared --enable-gpl --enable-libx264 --enable-libopus --enable-libvpx make -j$(nproc echo" Building and installing libvpx 1.15.0..." cd /tmp wget https://github.com/webmproject/libvpx/archive /refs/tags/v1.15.0.tar.gz tar xzvf v1.15.0.tar.gz cd libvpx-1.15.0 . usr/local --enable-shared --disable-examples make -j$(nproc) make install ldconfig cd /tmp && rm -rf libvpx -1.15.0* echo"✅ libvpx 1.15.0 installed."
此外,LibVPx是FFmpeg中VP9的实现,所有对AV1的引用都参考FFmpeg中可用的AV1编解码器。 表1. AV1当前的优化编码时间 根据2018年8月对其他编解码器的评测,AV1的编码时间是x265和LibVPx的3倍左右。 也就是说,在我的“数字视频编码”一书中,我使用8个片段为x264,x265和LibVPx创建了类似的曲线,平均持续时间约为2分钟。 x264,x265和LibVPx都有自己的质量/速度曲线,如果我们要对AV1应用“实用”设置,我们应该对这三个编解码器做同样的设置。 这使得AV1的制作成本几乎是x265和LibVPx的20倍,这只适用于编码高6位数和7位数的观众数量。
/configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make clean libvpx sudo apt-get install libvpx-dev cd ~/ffmpeg_sources wget http://storage.proxy.ustclug.org/downloads.webmproject.org /releases/webm/libvpx-1.6.1.tar.bz2 tar xjvf libvpx-1.6.1.tar.bz2 cd llibvpx-1.6.1 PATH="$HOME/bin:$PATH --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx
│ │ ├── vaapi_encode.c │ │ └── vaapi_transcode.c │ ├── ffprobe.xsd │ ├── libvpx -1080p50_60.ffpreset │ ├── libvpx-1080p.ffpreset │ ├── libvpx-360p.ffpreset │ ├── libvpx -720p50_60.ffpreset │ └── libvpx-720p.ffpreset └── man ├── man1 │ ├── ffmpeg
VP9编码器中的速率控制算法 主讲人介绍他们提出的方法可以用于任何类型的视频编码器,但他们将针对第二节中介绍的 VP9 标准的 libvpx 实现来描述它。 Libvpx 帧级提高 Libvpx 是开源的 VP9 编码器实现,许多研究者以此为参考进行研究开发。 在 Libvpx 中有一个 2-pass 的编码方法,首先对整个视频进行非常快速地第一轮分析,所得到的统计数据将被用来调整第二轮的编码参数,计算目标帧的大小和规划整个视频流的比特分布。 这有助于防止 libvpx 中由于使用 err_per_mb的经验值而出现的过度提升关键帧的问题。 使用线性回归比较了相关的编码性能,并提出了典型的 Facebook 视频内容的实验结果,显示与原始的libvpx VP9 编码器相比, BD-rate 性能有所提高。
enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx libvorbis libxcb_shape sdl2 bzlib libfreetype libvpx // 启用 libvpx VP8/VP9 编解码 --enable-libx264 // 启用 libx264 H.264 编解码 --enable-libx265 // 启用 -1080p.ffpreset │ ├── libvpx-1080p50_60.ffpreset │ ├── libvpx-360p.ffpreset │ ├── libvpx