GStreamer

出自 Arch Linux 中文维基

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-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[編輯 | 編輯原始碼]

PulseAudiogst-plugins-good 插件包提供.

KDE / Phonon integration[編輯 | 編輯原始碼]

請查看 Phonon.

硬件加速[編輯 | 編輯原始碼]

硬件視頻加速.

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


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

$ 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)。

相關鏈接[編輯 | 編輯原始碼]