如何在 Bionic Beaver(18.04)上使用 AV1 编解码器对视频进行编码和播放?

如何在 Bionic Beaver(18.04)上使用 AV1 编解码器对视频进行编码和播放?

显然,Chrome 69 测试版包含对开放媒体联盟 AV1 编解码器的支持如果不能使用新编解码器对视频进行编码,该功能似乎就毫无意义。

  1. 如何在 Ubuntu 18.04 上使用这个新的编解码器对视频进行编码?
  2. 其他媒体播放器(如)的播放支持情况如何mpv

答案1

目前,Bionic Beaver 18.04 的标准安装将提供很少的支持用于编码或播放 AOMedia Video 1 (AV1) 文件。为了测试此断言,我在此处创建了一个测试 AV1 文件:

wget http://www.andrews-corner.org/samples/askubuntu_test_aom.mp4

目前(2018 年 8 月 5 日),Bionic Beaver 对 AV1 文件的支持已使用以下软件包和版本中的示例文件进行了测试:

  1. 媒体信息:从 Bionic Beaver Repository 下载可为 AV1 文件提供“开箱即用”的支持。
  2. 甚高频:从 Bionic Beaver Repository 下载的不支持 AV1 文件。此支持可以从 vlc 3.0 及更高版本编译。参见下面的屏幕截图...
  3. 播放机:Bionic Beaver 版本不支持 AV1。
  4. 乘用车:Bionic Beaver 版本不支持 AV1。
  5. FFmpeg:这里有两点:
    1. 带有额外编解码器的 Bionic Beaver 版本不支持 AV1。
    2. 全力支持可以通过以下方式获得FFmpeg Trac 编译指南自 4.0 版以来,此功能已成为可能。可以创建文件,然后使用 FFplay 播放。
  6. 铬合金:这里再次强调 2 点:
    1. Bionic Beaver 存储库中不提供 Chrome。
    2. Chrome 的 -dev 版本在播放示例文件时没有问题。我测试了Version 70.0.3510.0 (Official Build) dev (64-bit)。可用作直接下载来自谷歌,见下面的截图!
  7. 火狐:Bionic Beaver Firefox 无法播放 AV1 文件,但应该会支持 AV1Firefox 63当它被释放时...
  8. MKVToolNix:两点:
    1. Bionic Repository 版本无法充分处理 AV1。它是版本 19,而版本 22 添加了所需的支持。
    2. 开发人员有说明在 Bionic Beaver 下安装最新的 MKVToolNix但我相信,即使在这个版本中,大多数 AV1 功能仍然等待编解码器成熟。此警告适用于 MKVToolNix 23 和 24 版本。

这就是目前的状况,有点令人沮丧,但随着 AV1 的成熟,情况会有所改善……

最终获胜者是:

在此处输入图片描述

Chrome!!用最少的麻烦完成所有工作 :)

亚军:

在此处输入图片描述

Vlc!!一切都已完成,只等打包人员赶上来 :)。

参考:

  • 为 libaom 构建 Slackware:Slackware 人员如何构建和打包 libaom。其中的一些技术可以轻松转换为 Ubuntu 方式……

答案2

截至 2018 年 10 月 27 日,获取 AV1 播放支持的最简单方法是:

  • 转到 Firefox 的about:config页面并设置media.av1.enabledtrue。Firefox 63.0 及更新版本具有内置 AV1 支持,但目前默认处于禁用状态。

  • 安装适用于 VLC 3.0.x 系列 Beta 版(当前为 3.0.4-157-ga26ab1e)的 SnapSnap 商店。在商店中转到所有版本 -> 最新/测试版 -> 安装 -> 在桌面商店中查看或通过命令行:

    sudo snap install vlc --beta

  • 安装最新版本的 mpv。他们的安装页面链接到此 PPA。我不推荐这种方法,因为 mpv 目前有一个错误这导致 AV1 解码性能不佳。


编码是另一回事,目前是个难题。到目前为止,还没有办法得到你想要的一切;FFmpeg 可以通过遵循他们的Ubuntu 编译指南但多线程编码所需的功能(即-tile-columns-tile-rows,以及-row-mt首选)。这意味着 FFmpeg 只能使用一个线程进行 AV1 编码,这会使速度比正常情况慢几倍。这已经导致对 AV1 编码速度到底有多慢的误解我不太推荐这种方法。

就编码速度而言,直接使用aomenc工具进行编码是最现实的选择,但您会错过 FFmpeg 的所有好处。aomenc 仅接受 .y4m 格式的原始视频,这种格式占用大量空间,而且显然它不能编码音频。速度也是一个问题:在最快的速度设置和 1000k 比特率下,10 秒的 1080p 24 fps 视频需要 13 分钟才能编码。也就是每秒编码 0.32 帧。编码器利用 CPU 的能力也是问题。在最快的速度设置下,8 核 Ryzen 1700X 的平均 CPU 使用率约为 21%。使用第二慢的设置时,这一比例上升到 41%。所以编码器肯定还没有准备好广泛使用。

如果您仍想尝试,则需要从源代码进行编译。您可以调整 FFmpeg 编译指南的 libaom 部分,或者如果您决定编译 FFmpeg,请使用应该挂在 FFmpeg 构建目录中的已编译 aomenc。

首先,您需要使用 FFmpeg 将源视频转换为 y4m。要转换 10 秒的视频:

`ffmpeg -i 输入.mp4 -t 10 -pix_fmt yuv420p 视频.y4m

要进行编码,您可以使用类似这样的命令:

aomenc --fps=24/1 -u 0 --codec=av1 --target-bitrate=1000 --lag-in-frames=25 --auto-alt-ref=1 -t 24 --cpu-used=8 --tile-columns=2 --tile-rows=2 --row-mt=1 -o output.webm video.y4m

不过我建议等待 FFmpeg 获得更好的支持。这将使编码成为一个更加现实的前景。

相关内容