编解码器和容器

出自 ArchWiki

来自 Wikipedia,“编解码器是一种能够编码和/或解码数字数据流或信号的设备或计算机程序。”

通常,多媒体应用程序利用编解码器来编码或解码音频或视频流。为了播放编码后的流,用户必须确保安装了适当的编解码器。

本文仅讨论编解码器和应用程序后端;有关媒体播放器的列表(MPlayermpvVLC 是流行的选择),请参阅应用程序列表/多媒体

要求

播放多媒体内容需要两个组件

  • 功能强大的媒体播放器
  • 适当的编解码器

如果您已安装媒体播放器,则不总是需要显式安装编解码器。 例如,MPlayer 拉取大量编解码器作为依赖项,并且还内置了编解码器。

编解码器列表

音频

另请参阅 Wikipedia:音频编码格式比较

无损音频编解码器

  • Apple Lossless (ALAC) — 一种由 Apple 开发并在其所有平台和设备上部署的无损音频压缩编解码器。
https://alac.macosforge.org/ || alac-gitAUR
  • FLAC — 自由无损音频编解码器。
https://xiph.org/flac/ || flac
https://www.wavpack.com/ || wavpack

有损音频编解码器

格式 编码 解码
AAC #AAC
ATSC A/52 aftenAUR a52dec
CELT celtAUR
MPEG-1   libmad
MP3 lame
Musepack (MPC) 1 libmpcdec
Opus opus
Vorbis libvorbis
语音编解码器
AMR opencore-amr
Speex speex
  1. mppenc 未打包。
  • CELT — 开源、免版税的有损音频编解码器,针对低延迟进行了优化。
https://www.celt-codec.org/ || celtAUR
  • LAME — MP3 编码器和图形帧分析器。
https://lame.sourceforge.io/ || lame
  • liba52 — 用于解码 ATSC A/52 (杜比数字) 流(有损)的免费库。
https://liba52.sourceforge.io/ || a52dec
  • libdca — 用于解码 DTS Coherent Acoustics 流的免费库。
https://www.videolan.org/developers/libdca.html || libdca
  • MAD — 高质量 MPEG 音频解码器。
https://www.underbit.com/products/mad/ || libmad
https://musepack.net/ || libmpcdec
  • opencore-amr — 自适应多速率 (AMR) 语音编解码器的开源实现。
https://sourceforge.net/projects/opencore-amr/ || opencore-amr
  • Opus — 开源、免版税、有损音频编解码器,专为语音和通用音频编码以及低延迟而设计。
https://www.opus-codec.org/ || opus
  • Speex — 专为语音设计的免专利有损音频压缩格式。
https://www.speex.org/ || speex
  • Vorbis — 开源、免专利、有损音频编解码器。
https://xiph.org/vorbis/ || libvorbis
AAC

来自 Wikipedia

高级音频编码 (AAC) 是一种用于有损数字音频压缩的专有音频编码标准。 AAC 旨在成为 MP3 格式的继任者,通常在相同比特率下实现比 MP3 更好的音质。
  • FAAC — 专有 AAC 音频编码器。
https://faac.sourceforge.net/ || faac
  • FAAD2 — ISO AAC 音频解码器。
https://faac.sourceforge.net/ || faad2
  • Fraunhofer FDK AAC — OpenCORE 框架实现高级音频编码 (AAC) 编码器。 Fraunhofer AAC 解码器和编码器的修改库。
https://sourceforge.net/projects/opencore-amr/ || libfdk-aac (编解码器库) fdkaac (libfdk-aac 的 CLI 前端)
  • Nero AAC — Nero AAC 参考质量 MPEG-4 和 3GPP 音频编解码器。(已弃用)
https://www.nero.com/ || neroaac-binAUR

图像编解码器

  • JasPer — 新兴 JPEG-2000 Part-1 标准中指定的编解码器的基于软件的实现。
https://www.ece.uvic.ca/~frodo/jasper/ || jasper
  • OpenJPEG — 开源 JPEG 2000 编解码器。
https://www.openjpeg.org/ || openjpegAUR
  • WebP — 一种采用有损和无损压缩的图像格式。 它目前由 Google 开发。
https://developers.google.com/speed/webp/ || libwebp
https://github.com/AOMediaCodec/libavif || libavif
https://github.com/strukturag/libheif || libheif
  • JPEG XL — 由联合图像专家组开发的免版税图像格式,旨在广泛使用,能够重新编码 JPEG,同时避免生成损失。
https://jpeg.org/jpegxl/ || libjxl

视频编解码器

另请参阅 Wikipedia:视频编解码器比较

格式 编解码器库
AV1 aom, dav1d (解码), rav1e (编码), svt-av1
AVS2 davs2AUR (解码)
Daala daala-gitAUR
Dirac schroedinger
DV libdv
H.265 x265
libde265
H.264 x264
MPEG-1 libmpeg2 (解码)
MPEG-2
MPEG-4 Xvid (xvidcore)
Theora libtheora
VP8, VP9 libvpx
  • AV1 — AOMedia Video 1 (AV1) 是 Google 的 VP9、Mozilla 的 Daala、Cisco 的 Thor 的后继编解码器。 aom 是编码和解码的参考实现。 dav1d 是注重性能的解码器。 rav1e 是注重性能的编码器。 大多数基准测试表明 svt-av1 的性能优于 rav1e。
https://aomediacodec.github.io/av1-spec/ || aom, dav1d, rav1e, svt-av1
  • Daala — 由 Xiph.Org 基金会开发并由 Mozilla 基金会赞助的研究视频编解码器。 该项目的目标是提供一种免费实施、使用和分发数字媒体格式和参考实现,其技术性能优于 h.265。
https://www.xiph.org/daala/ || daala-gitAUR
  • libde265 — h.265 视频编解码器的开源实现。
https://github.com/strukturag/libde265 || libde265
  • libdv — Quasar DV 编解码器 (libdv) 是 DV 视频的软件编解码器。
https://libdv.sourceforge.net/ || libdv
  • libmpeg2 — 用于解码 MPEG-1 和 MPEG-2 视频流的库。
https://libmpeg2.sourceforge.io/ || libmpeg2
  • Schrödinger — 先进的免版税视频压缩格式,专为广泛用途而设计,从交付低分辨率 Web 内容到广播高清及更高分辨率,再到近乎无损的工作室编辑。
https://launchpad.net/schroedinger/ || schroedinger
  • Theora — 由 Xiph.org 开发的开源视频编解码器。
https://www.theora.org/ || libtheora
  • VP9 — 高质量、开放的 Web 视频格式,每个人都可以免费使用。 早期 VP8 编解码器的改进版本。
https://www.webmproject.org || libvpx
  • x264 — 用于编码 H264/AVC 视频流的免费库。
https://www.videolan.org/developers/x264.html || x264
  • x265 — 用于将视频流编码为 H.265/高效率视频编码 (HEVC) 格式的开源项目和免费应用程序库。
https://www.x265.org/ || x265
  • Xvid — 开源 MPEG-4 视频编解码器。
https://www.xvid.com/ || xvidcore

容器格式工具

另请参阅 Wikipedia:视频容器格式比较

  • MKVToolNix — 用于创建、编辑和检查 Matroska 文件的工具集。
https://mkvtoolnix.download/ || mkvtoolnix-cli, mkvtoolnix-gui
  • MP4Joiner — 用于操作 MP4 文件的 GUI 工具集合(MP4Joiner、MP4Splitter)。
https://www.mp4joiner.org/ || mp4joinerAUR
  • OGMtools — 用于 OGG 媒体流的信息、提取或创建工具。
https://www.bunkus.org/videotools/ogmtools || ogmtools

后端

GStreamer

来自 https://gstreamer.freedesktop.org/

GStreamer 是一个用于构建媒体处理组件图的库。 它支持的应用范围从简单的 Ogg/Vorbis 播放、音频/视频流式传输到复杂的音频(混合)和视频(非线性编辑)处理。

简而言之,GStreamer 是许多媒体应用程序使用的后端框架。 请参阅 GStreamer 文章。

xine

来自 https://sourceforge.net/projects/xine/

xine 是一款免费的多媒体播放器。 它可以播放 CD、DVD、蓝光光盘和 VCD。 它还可以解码来自本地磁盘驱动器的 AVI、MOV、WMV 和 MP3 等多媒体文件,并显示通过 Internet 流式传输的多媒体。

作为 GStreamer 的替代方案,许多媒体播放器可以配置为使用 xine-lib 提供的 xine 后端。

请注意,xine 项目本身提供了一个功能强大的视频播放器 xine-ui

libavcodec

libavcodecFFmpeg 项目的一部分。 它包含大量视频和音频编解码器。 libavcodec 编解码器包含在 MPlayerVLC 等媒体播放器中,因此您可能不需要安装 ffmpeg 软件包本身。

技巧与窍门

Totem 播放器中没有 H264、mpg4 或 Musepack (.mpc)

如果您在使用 Totem 媒体播放器时看到“缺少 H264 插件”警告,安装 gst-libav

Parole 播放器中没有 H264

如果您在使用 Parole 媒体播放器时看到“Parole 需要 H.264 解码器才能播放此文件”警告,安装 gst-libav