「GStreamer」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版からUsage転載)
(→‎統合: 英語版からハードウェアアクセラレーションを転載)
82行目: 82行目:
 
[[ハードウェアビデオアクセラレーション]]を見てください。
 
[[ハードウェアビデオアクセラレーション]]を見てください。
   
  +
GStreamer will automatically detect and use the correct API [https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html]. Depending on the system [[install]]:
GStreamer は自動的に適切な API を認識・使用します [http://docs.gstreamer.com/display/GstSDK/Playback+tutorial+8%3A+Hardware-accelerated+video+decoding]。使用する API にあわせて以下のパッケージを[[インストール]]してください:
 
* {{pkg|gstreamer-vaapi}} - VA-API のサポート。
+
* {{pkg|gstreamer-vaapi}} for [[VA-API]] support.
* {{pkg|gst-plugins-bad}} - VDPAU のサポート。
+
* {{pkg|gst-plugins-bad}} and {{pkg|nvidia-utils}} for NVDECODE/NVENCODE support.
   
  +
==== Ignore driver whitelist ====
{{Note|Intel の GPU を使っているコンピュータで VA-API のサポートを有効にすると動画ファイルのサムネイル作成に問題が発生することがあります。詳しくは [[GNOME Files#動画ファイルのサムネイルが作成されない]]を参照。}}
 
  +
  +
GStreamer [https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/blob/master/gst/vaapi/gstvaapipluginutil.c#L952 uses a whitelist] of VA-API drivers. To ignore the whitelist and allow support for other drivers, set {{ic|1=GST_VAAPI_ALL_DRIVERS=1}} as [[environment variable]].
  +
  +
==== Verify VA-API support ====
  +
  +
To verify VA-API support:
  +
  +
{{hc|$ gst-inspect-1.0 vaapi|2=
  +
Plugin Details:
  +
Name vaapi
  +
Description VA-API based elements
  +
Filename /usr/lib/gstreamer-1.0/libgstvaapi.so
  +
Version ''version''
  +
License LGPL
  +
Source module gstreamer-vaapi
  +
Source release date ''date''
  +
Binary package gstreamer-vaapi
  +
Origin URL <nowiki>https://archlinux.org/</nowiki>
  +
  +
vaapijpegdec: VA-API JPEG decoder
  +
vaapimpeg2dec: VA-API MPEG2 decoder
  +
vaapih264dec: VA-API H264 decoder
  +
vaapivc1dec: VA-API VC1 decoder
  +
vaapih265dec: VA-API H265 decoder
  +
vaapipostproc: VA-API video postprocessing
  +
vaapidecodebin: VA-API Decode Bin
  +
vaapisink: VA-API sink
  +
vaapih265enc: VA-API H265 encoder
  +
vaapih264enc: VA-API H264 encoder
  +
  +
10 features:
  +
+-- 10 elements
  +
}}
  +
  +
==== Verify NVDECODE/NVENCODE support ====
  +
  +
To verify NVDECODE/NVENCODE support:
  +
  +
{{hc|$ gst-inspect-1.0 nvcodec|2=
  +
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 <nowiki>https://archlinux.org/</nowiki>
  +
  +
nvh265enc: NVENC HEVC Video Encoder
  +
nvh264enc: NVENC H.264 Video Encoder
  +
nvvp9dec: NVDEC vp9 Video Decoder
  +
nvvp8dec: NVDEC vp8 Video Decoder
  +
nvh265dec: NVDEC h265 Video Decoder
  +
nvh265sldec: NVDEC H.265 Stateless Decoder
  +
nvjpegdec: NVDEC jpeg Video Decoder
  +
nvh264dec: NVDEC h264 Video Decoder
  +
nvh264sldec: NVDEC H.264 Stateless Decoder
  +
nvmpeg4videodec: NVDEC mpeg4video Video Decoder
  +
nvmpeg2videodec: NVDEC mpeg2video Video Decoder
  +
nvmpegvideodec: NVDEC mpegvideo Video Decoder
  +
  +
12 features:
  +
+-- 12 elements
  +
}}
  +
  +
==== Set decoder ranks ====
  +
  +
{{Accuracy|Is {{ic|avdec_av1}} an actual plugin? It doesn't exist in the [https://gstreamer.freedesktop.org/documentation/plugins_doc.html plugin list].}}
  +
  +
For some [[NVIDIA]] users, {{Pkg|gst-libav}} may prioritize the Libav decoder over [https://gstreamer.freedesktop.org/documentation/nvcodec/index.html nvcodec] decoders which will inhibit hardware acceleration. The {{ic|GST_PLUGIN_FEATURE_RANK}} [[environment variable]] can be used to rank decoders and thus alleviate this issue. See "GST_PLUGIN_FEATURE_RANK" in the [https://gstreamer.freedesktop.org/documentation/gstreamer/running.html#environment-variables documentation] for more information. For example:
  +
  +
GST_PLUGIN_FEATURE_RANK=nvmpegvideodec:MAX,nvmpeg2videodec:MAX,nvmpeg4videodec:MAX,nvh264sldec:MAX,nvh264dec:MAX,nvjpegdec:MAX,nvh265sldec:MAX,nvh265dec:MAX,nvvp9dec:MAX
  +
  +
Those without AV1 hardware support may also want to disable AV1 decoders (e.g., for YouTube on {{Pkg|webkit2gtk}}-based browsers) by appending {{ic|avdec_av1:NONE}} and {{ic|av1dec:NONE}} to the list above.
   
 
== 参照 ==
 
== 参照 ==

2022年1月11日 (火) 04:07時点における版

GStreamer は GObject の型システムを使って C プログラミング言語で書かれたパイプラインベースのマルチメディアフレームワークです。

プログラマーは GStreamer を使うことで、単純な音声再生や動画再生から録画・録音、ストリーミング、編集まで、様々なメディア処理コンポーネントを作成することができます。パイプライン設計により、動画エディタやストリーミングメディアの配信プログラム、メディアプレイヤーまで幅広いマルチメディアアプリケーションの基礎となります。

クロスプラットフォームになるように設計されているので Linux (x86, PowerPC, ARM), Solaris (Intel, SPARC), macOS, Microsoft Windows, OS/400 上で動作します。GStreamer には Python, C++, Perl, GNU Guile (guile), Ruby などのプログラミング言語用のバインディングが用意されています。GStreamer はフリーソフトウェアであり、GNU Lesser General Public License でライセンスされています。

インストール

gstreamer パッケージをインストールしてください。

GStreamer を役立てるには、プラグインパッケージのインストールが必要になります:

  • gst-libav - 多数のデコーダとエンコーダが含まれている libav ベースのプラグイン。
  • gst-plugins-bad - 品質テストやドキュメントが必要とされるプラグイン。
  • gst-plugins-base - 重要で典型的な基本セット。
  • gst-plugins-good - LGPL ライセンスで配布されている高品質のプラグイン。
  • gst-plugins-ugly - 配布に問題がある高品質のプラグイン。
  • gst-plugin-libde265AUR - gstreamer 用の libde265 プラグイン (オープンな h.265 動画コーデックの実装)。

Usage

Using gst-launch-1.0

A helpful tool of GStreamer is the gst-launch-1.0(1) command. It is an extremely versatile command line tool to create GStreamer pipelines. It is very similar to and can do many of the things the FFmpeg command can do. Here are some examples:

Convert an MP4 file to 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

Using gst-discoverer-1.0

Another helpful tool is gst-discoverer-1.0(1), which is the GStreamer equivalent of FFmpeg's ffprobe(1).

Get info on a video file:

$ 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 パッケージによって提供されます。

軽量デスクトップ

音声の出力先のデバイスを変更するなど、GStreamer の設定をしたいときは、gstreamer-propertiesAUR パッケージに入っている gstreamer-properties を使用します。各ユーザーで実行することも、全てのユーザーに適用されるように root で実行することも可能です。ユーザーごとの設定ファイルは $HOME/.gconf/system/gstreamer にあり、全ユーザー共通のファイルは /etc/gconf/gconf.xml.defaults にあります。

KDE / Phonon の統合

KDE#Phonon を見て下さい。

ハードウェアアクセラレーション

ハードウェアビデオアクセラレーションを見てください。

GStreamer will automatically detect and use the correct API [1]. Depending on the system install:

Ignore driver whitelist

GStreamer uses a whitelist of VA-API drivers. To ignore the whitelist and allow support for other drivers, set GST_VAAPI_ALL_DRIVERS=1 as environment variable.

Verify VA-API support

To verify VA-API support:

$ gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename                 /usr/lib/gstreamer-1.0/libgstvaapi.so
  Version                  version
  License                  LGPL
  Source module            gstreamer-vaapi
  Source release date      date
  Binary package           gstreamer-vaapi
  Origin URL               https://archlinux.org/

  vaapijpegdec: VA-API JPEG decoder
  vaapimpeg2dec: VA-API MPEG2 decoder
  vaapih264dec: VA-API H264 decoder
  vaapivc1dec: VA-API VC1 decoder
  vaapih265dec: VA-API H265 decoder
  vaapipostproc: VA-API video postprocessing
  vaapidecodebin: VA-API Decode Bin
  vaapisink: VA-API sink
  vaapih265enc: VA-API H265 encoder
  vaapih264enc: VA-API H264 encoder

  10 features:
  +-- 10 elements

Verify NVDECODE/NVENCODE support

To verify NVDECODE/NVENCODE support:

$ 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/

  nvh265enc: NVENC HEVC Video Encoder
  nvh264enc: NVENC H.264 Video Encoder
  nvvp9dec: NVDEC vp9 Video Decoder
  nvvp8dec: NVDEC vp8 Video Decoder
  nvh265dec: NVDEC h265 Video Decoder
  nvh265sldec: NVDEC H.265 Stateless Decoder
  nvjpegdec: NVDEC jpeg Video Decoder
  nvh264dec: NVDEC h264 Video Decoder
  nvh264sldec: NVDEC H.264 Stateless Decoder
  nvmpeg4videodec: NVDEC mpeg4video Video Decoder
  nvmpeg2videodec: NVDEC mpeg2video Video Decoder
  nvmpegvideodec: NVDEC mpegvideo Video Decoder

  12 features:
  +-- 12 elements

Set decoder ranks

この記事またはセクションの正確性には問題があります。
理由: Is avdec_av1 an actual plugin? It doesn't exist in the plugin list. (議論: トーク:GStreamer#)

For some NVIDIA users, gst-libav may prioritize the Libav decoder over nvcodec decoders which will inhibit hardware acceleration. The GST_PLUGIN_FEATURE_RANK environment variable can be used to rank decoders and thus alleviate this issue. See "GST_PLUGIN_FEATURE_RANK" in the documentation for more information. For example:

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

Those without AV1 hardware support may also want to disable AV1 decoders (e.g., for YouTube on webkit2gtk-based browsers) by appending avdec_av1:NONE and av1dec:NONE to the list above.

参照