GStreamer - Arch Linux 中文维基

跳至內容

# GStreamer

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 GStreamer，最近一次同步於 2024-11-16，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

GStreamer 是一個基於管道的多媒體框架。Gstreamer使用C語言編寫，基於GObject。

Gstreamer允許程式設計師創建各種媒體處理組件，包括簡單的音頻播放，音頻與視頻播放，錄製，流媒體控制與媒體編輯。其管道式設計是創建多種多媒體程序的基礎，例如視頻編輯器，流媒體伺服器，以及媒體播放器。

Gstreamer是跨平台框架，目前已知可在下列平台上工作：Linux (x86, PowerPC 以及 ARM), Solaris (Intel 和 SPARC), Mac OS X, Microsoft Windows 以及 OS/400。GStreamer 提供了多種程式語言的綁定，包括 Python、C++、Perl、GNU Guile（guile）和 Ruby。GStreamer 是自由軟體，採用 GNU寬通用公共許可證（LGPL）授權。。

## 安裝

安裝軟體包 gstreamer包 .

為了使 GStreamer 更好用，請安裝所需的插件包。請參閱官方文檔了解每個插件的功能列表。

- gst-libav包 - 基於Libav的插件，包含眾多編解碼器。
- gst-plugins-bad包 - 需要更多改進，測試以及資料的插件。
- gst-plugins-base包 - 基本的Gstreamer組件。
- gst-plugins-good包 - 發布於LGPL許可證下，質量較高的插件。
- gst-plugins-ugly包 - 質量較高，但是可能造成分發問題的插件。
- gst-plugin-libde265AUR - libde265包 插件 (開源的h.265視頻解碼實現)。

## 使用方法

### 使用 gst-launch-1.0

GStreamer 的一個有用工具是 gst-launch-1.0(1) 命令。它是一個用途廣泛的命令行工具，用於創建 GStreamer 管道。它與 FFmpeg 命令非常相似，並且可以執行許多相同的操作。以下是一些示例：

將 MP4 文件轉換為 MKV：

    $ gst-launch-1.0 filesrc location=source.mp4 ! qtdemux name=demux matroskamux name=mux ! filesink location=dest.mkv  demux.audio_0 ! queue ! aacparse ! queue ! mux.audio_0  demux.video_0 ! queue ! h264parse ! queue ! mux.video_0

### 使用 gst-discoverer-1.0

另一個有用的工具是 gst-discoverer-1.0(1)，它是 GStreamer 等同於 FFmpeg 的 ffprobe(1) 的工具。

獲取視頻文件信息：

    $ gst-discoverer-1.0 file.mp4

    Properties:
      Duration: 0:02:55.613000000
      Seekable: yes
      Live: no
      container: Quicktime
        audio: MPEG-4 AAC
          Stream ID: c910ef2fa357f9f4ad365aebc98cfca88d23fdca99d832645f5113efa43b0cd3/002
          Language: <unknown>
          Channels: 2 (front-left, front-right)
          Sample rate: 44100
          Depth: 16
          Bitrate: 125588
          Max bitrate: 125588
        video: H.264 (Constrained Baseline Profile)
          Stream ID: c910ef2fa357f9f4ad365aebc98cfca88d23fdca99d832645f5113efa43b0cd3/001
          Width: 192
          Height: 144
          Depth: 24
          Frame rate: 15000/1001
          Pixel aspect ratio: 1/1
          Interlaced: false
          Bitrate: 107884
          Max bitrate: 107884

## 集成

### PulseAudio

PulseAudio 由 gst-plugins-good包 插件包提供.

### KDE / Phonon integration

請查看 Phonon.

### 硬體加速

見硬體視頻加速.

GStreamer 將自動檢測並使用正確的 API [1]。根據系統安裝：

- gst-plugin-va包 以支持 VA-API 。
- gst-plugins-bad包 和 nvidia-utils包 以支持 NVDECODE/NVENCODE 。

如果安裝包後新元素沒有顯示出來，您可能需要刪除並重建插件註冊表。通常，只需執行以下命令：

    $ rm ~/.cache/gstreamer-1.0/registry.*.bin

然後 GStreamer 會在下次調用時重建註冊表，通常只需幾秒鐘。

#### 檢驗 VA-API

要檢驗 VA-API ：

    $ gst-inspect-1.0 va

    Plugin Details:
      Name                     va
      Description              VA-API codecs plugin
      Filename                 /usr/lib/gstreamer-1.0/libgstva.so
      Version                  version
      License                  LGPL
      Source module            gst-plugins-bad
      Documentation            https://gstreamer.freedesktop.org/documentation/va/
      Source release date      date
      Binary package           Arch Linux gst-plugins-bad version
      Origin URL               https://archlinux.org/

      vaav1dec: VA-API AV1 Decoder
      vacompositor: VA-API Video Compositor
      vadeinterlace: VA-API Deinterlacer
      vah264dec: VA-API H.264 Decoder
      vah264enc: VA-API H.264 Encoder
      vah264lpenc: VA-API H.264 Low Power Encoder
      vah265dec: VA-API H.265 Decoder
      vah265enc: VA-API H.265 Encoder
      vah265lpenc: VA-API H.265 Low Power Encoder
      vajpegdec: VA-API JPEG Decoder
      vampeg2dec: VA-API Mpeg2 Decoder
      vapostproc: VA-API Video Postprocessor
      vavp8dec: VA-API VP8 Decoder
      vavp9dec: VA-API VP9 Decoder

      14 features:
      +-- 14 elements

### 檢驗 NVDECODE/NVENCODE

    $ gst-inspect-1.0 nvcodec

    Plugin Details:
      Name                     nvcodec
      Description              GStreamer NVCODEC plugin
      Filename                 /usr/lib/gstreamer-1.0/libgstnvcodec.so
      Version                  version
      License                  LGPL
      Source module            gst-plugins-bad
      Source release date      date
      Binary package           GStreamer Bad Plugins (Arch Linux)
      Origin URL               https://archlinux.org/

      cudadownload: CUDA downloader
      cudaupload: CUDA uploader
      nvautogpuh264enc: NVENC H.264 Video Encoder Auto GPU select Mode
      nvautogpuh265enc: NVENC H.265 Video Encoder Auto GPU select Mode
      nvav1dec: NVDEC AV1 Decoder
      nvcudah264enc: NVENC H.264 Video Encoder CUDA Mode
      nvcudah265enc: NVENC H.265 Video Encoder CUDA Mode
      nvh264dec: NVDEC h264 Video Decoder
      nvh264enc: NVENC H.264 Video Encoder
      nvh264sldec: NVDEC H.264 Stateless Decoder
      nvh265dec: NVDEC h265 Video Decoder
      nvh265enc: NVENC HEVC Video Encoder
      nvh265sldec: NVDEC H.265 Stateless Decoder
      nvjpegdec: NVDEC jpeg Video Decoder
      nvmpeg2videodec: NVDEC mpeg2video Video Decoder
      nvmpeg4videodec: NVDEC mpeg4video Video Decoder
      nvmpegvideodec: NVDEC mpegvideo Video Decoder
      nvvp8dec: NVDEC vp8 Video Decoder
      nvvp8sldec: NVDEC VP8 Stateless Decoder
      nvvp9dec: NVDEC vp9 Video Decoder
      nvvp9sldec: NVDEC VP9 Stateless Decoder

      21 features:
      +-- 21 elements

#### 設置解碼器優先級

對於一些 NVIDIA 用戶，gst-libav包 可能會將 Libav 解碼器的優先級高於 nvcodec 解碼器，這會阻止硬體加速。可以使用 `GST_PLUGIN_FEATURE_RANK` 環境變量來設置解碼器的優先級，從而緩解此問題。有關更多信息，請參閱文檔中的 "GST_PLUGIN_FEATURE_RANK"。例如：

    GST_PLUGIN_FEATURE_RANK=nvmpegvideodec:MAX,nvmpeg2videodec:MAX,nvmpeg4videodec:MAX,nvh264sldec:MAX,nvh264dec:MAX,nvjpegdec:MAX,nvh265sldec:MAX,nvh265dec:MAX,nvvp9dec:MAX

硬體不支持 AV1 的用戶可能還需要通過將 `avdec_av1` 和 `av1dec` 添加到上述列表中，來禁用 AV1 解碼器（例如，在基於 webkit2gtk包 的瀏覽器中觀看 YouTube）。

## 相關連結

- 音頻系統
- 官方網站

分類：​

- 多媒體

GStreamer
新增話題