「GStreamer」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(他言語へのリンクを修正)
 
(4人の利用者による、間の20版が非表示)
1行目: 1行目:
[[Category:音声/動画]]
+
[[Category:マルチメディア]]
  +
[[de:GStreamer]]
 
[[en:GStreamer]]
 
[[en:GStreamer]]
[[es:GStreamer]]
+
[[zh-hans:GStreamer]]
[[zh-CN:GStreamer]]
 
 
GStreamer は GObject の型システムを使って C プログラミング言語で書かれたパイプラインベースのマルチメディアフレームワークです。
 
GStreamer は GObject の型システムを使って C プログラミング言語で書かれたパイプラインベースのマルチメディアフレームワークです。
   
 
プログラマーは GStreamer を使うことで、単純な音声再生や動画再生から録画・録音、ストリーミング、編集まで、様々なメディア処理コンポーネントを作成することができます。パイプライン設計により、動画エディタやストリーミングメディアの配信プログラム、メディアプレイヤーまで幅広いマルチメディアアプリケーションの基礎となります。
 
プログラマーは GStreamer を使うことで、単純な音声再生や動画再生から録画・録音、ストリーミング、編集まで、様々なメディア処理コンポーネントを作成することができます。パイプライン設計により、動画エディタやストリーミングメディアの配信プログラム、メディアプレイヤーまで幅広いマルチメディアアプリケーションの基礎となります。
   
クロスプラットフォームになるように設計されているので Linux (x86, PowerPC, ARM), Solaris (Intel, SPARC), Mac OS X, Microsoft Windows, OS/400 上で動作します。GStreamer には [[Python|Python]], C++, Perl, GNU Guile ({{Pkg|guile}}), [[Ruby|Ruby]] などのプログラミング言語用のバインディングが用意されています。GStreamer はフリーソフトウェアであり、GNU Lesser General Public License でライセンスされています。
+
クロスプラットフォームになるように設計されているので Linux (x86, PowerPC, ARM), Solaris (Intel, SPARC), macOS, Microsoft Windows, OS/400 上で動作します。GStreamer には [[Python]], C++, Perl, GNU Guile ({{Pkg|guile}}), [[Ruby]] などのプログラミング言語用のバインディングが用意されています。GStreamer はフリーソフトウェアであり、GNU Lesser General Public License でライセンスされています。
   
 
== インストール ==
 
== インストール ==
   
  +
{{Pkg|gstreamer}} パッケージを[[インストール]]してください。
[[公式リポジトリ]]からインストールできる GStreamer のバージョン:
 
* {{Pkg|gstreamer}} - 現行バージョン。
 
* {{Pkg|gstreamer0.10}} - 旧式ながら広く使われているバージョン。
 
   
GStreamer を役立てるには、プラグインパッケージインストールが必要なります
+
GStreamer を便利にするには、必要なプラグインパッケージインストールして下さい。各プラグインの機能のリストついては、[https://gstreamer.freedesktop.org/documentation/plugins_doc.html 公式ドキュメント] を参照してください
   
  +
* {{Pkg|gst-libav}} - 多くのデコーダとエンコーダが含まれている [[FFmpeg|Libav-based]] ベースのプラグイン。
=== 現行バージョンのプラグイン ===
 
 
* {{Pkg|gst-libav}} - 多数のデコーダとエンコーダが含まれている libav ベースのプラグイン。
 
 
* {{Pkg|gst-plugins-bad}} - 品質テストやドキュメントが必要とされるプラグイン。
 
* {{Pkg|gst-plugins-bad}} - 品質テストやドキュメントが必要とされるプラグイン。
 
* {{Pkg|gst-plugins-base}} - 重要で典型的な基本セット。
 
* {{Pkg|gst-plugins-base}} - 重要で典型的な基本セット。
 
* {{Pkg|gst-plugins-good}} - LGPL ライセンスで配布されている高品質のプラグイン。
 
* {{Pkg|gst-plugins-good}} - LGPL ライセンスで配布されている高品質のプラグイン。
 
* {{Pkg|gst-plugins-ugly}} - 配布に問題がある高品質のプラグイン。
 
* {{Pkg|gst-plugins-ugly}} - 配布に問題がある高品質のプラグイン。
  +
* {{AUR|gst-plugin-libde265}} - gstreamer 用の {{Pkg|libde265}} プラグイン (オープンな h.265 動画コーデックの実装)
* {{Pkg|gst-vaapi}} - [[VA-API#GStreamer|VA-API]] のサポート。
 
* {{AUR|gst-plugin-libde265-git}} - gstreamer {{AUR|libde265}} プラグイン (オプンな h.265 動画コーデックの実装)
+
* {{AUR|gst-plugin-openh264}} - H.264サポ
   
  +
== Usage ==
=== 旧式バージョンのプラグイン ===
 
   
  +
=== gst-launch-1.0 の使用方法 ===
* {{Pkg|gstreamer0.10-bad-plugins}} - 品質テストやドキュメントが必要とされるプラグイン。
 
  +
* {{Pkg|gstreamer0.10-base-plugins}} - 重要で典型的な基本セット。
 
  +
GStreamer の便利なツールに {{man|1|gst-launch-1.0}} コマンドがあります。これは GStreamer のパイプラインを作成するための非常に多機能なコマンドラインツールです。これは [[FFmpeg]] コマンドと非常によく似ており、多くのことができます。以下はその例です。
* {{Pkg|gstreamer0.10-ffmpeg}} - 多数のデコーダとエンコーダが含まれている libav ベースのプラグイン。
 
  +
* {{Pkg|gstreamer0.10-good-plugins}} - LGPL ライセンスで配布されている高品質のプラグイン。
 
  +
MP4 ファイルを MKV に変換する。
* {{AUR|gstreamer0.10-good-plugins-slim}} - LGPL ライセンスで配布されている高品質のプラグイン。GNOME とアスキーアートの依存パッケージを取り除いたもの。
 
  +
* {{Pkg|gstreamer0.10-ugly-plugins}} - 配布に問題がある高品質のプラグイン。
 
  +
$ 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
* {{Pkg|gstreamer0.10-vaapi}} - [[VA-API#GStreamer|VA-API]] のサポート。
 
  +
* {{AUR|gstreamer0.10-plugin-libde265-git}} - gstreamer0.1 用の {{AUR|libde265}} プラグイン (オープンな h.265 動画コーデックの実装)。
 
  +
=== gst-discoverer-1.0 の使用方法 ===
  +
  +
もう一つの有用なツールは {{man|1|gst-discoverer-1.0}} で、これは FFmpeg の {{man|1|ffprobe}} に相当します。
  +
  +
ビデオファイルの情報を取得する。
  +
  +
{{hc|$ gst-discoverer-1.0 file.mp4|2=
  +
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
  +
}}
   
 
== 統合 ==
 
== 統合 ==
42行目: 69行目:
 
=== PulseAudio ===
 
=== PulseAudio ===
   
[[PulseAudio|PulseAudio]] のサポートは ''good'' プラグインパッケージによって提供されます。
+
[[PulseAudio]] のサポートは {{Pkg|gst-plugins-good}} パッケージによって提供されます。
   
=== 軽量デスクトップ ===
+
=== PipeWire ===
   
  +
[[PipeWire]] のサポートは {{Pkg|gst-plugin-pipewire}} パッケージで提供されます。
音声の出力先のデバイスを変更するなど、GStreamer の設定をしたいときは、{{AUR|gstreamer-properties}} パッケージに入っている ''gstreamer-properties'' を使用します。各ユーザーで実行することも、全てのユーザーに適用されるように root で実行することも可能です。ユーザーごとの設定ファイルは {{ic|$HOME/.gconf/system/gstreamer}} にあり、全ユーザー共通のファイルは {{ic|/etc/gconf/gconf.xml.defaults}} にあります。
 
   
 
=== KDE / Phonon の統合 ===
 
=== KDE / Phonon の統合 ===
   
[[KDE#Phonon|KDE#Phonon]] を見て下さい。
+
[[KDE#Phonon]] を見て下さい。
  +
  +
=== ハードウェアアクセラレーション ===
  +
  +
GStreamer は、正しい API [https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html] を自動的に検出して使用します。システムに応じて [[インストール]] する場合:
  +
* [[VA-API]] サポートの場合:
  +
** {{pkg|gstreamer-vaapi}}: 古い実装。GStreamer 1.24 で非推奨になる予定です。または
  +
** {{pkg|gst-plugin-va}}: 新しい実験的な実装であり、GStreamer 1.24 ではデ​​フォルトになります。
  +
* NVDECODE/NVENCODE サポート用の {{pkg|gst-plugins-bad}} および {{pkg|nvidia-utils}}
  +
  +
パッケージをインストールした後に新しい要素が表示されない場合は、プラグインレジストリを削除して再構築することをお勧めします。通常はこれで十分です
  +
  +
$ rm ~/.cache/gstreamer-1.0/registry.*.bin
  +
  +
Gstreamer は次回の呼び出し時にレジストリを再構築します。これには通常数秒かかります。
  +
  +
==== gst-plugin-va でデコーダの優先順位を設定する ====
  +
  +
{{pkg|gst-plugin-va}} のデコーダーはデフォルトで 0 ランクになっており、ソフトウェアデコーダーがそれらよりも優先されることを意味します。[https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2312 GStreamer 1.24 で変更] される予定ですがそれまでは、次の [[環境変数]] によって高い優先度を追加できます:
  +
  +
GST_PLUGIN_FEATURE_RANK=vah264dec:PRIMARY,vah265dec:PRIMARY,vavp8dec:PRIMARY,vavp9dec:PRIMARY,vampeg2dec:PRIMARY,vaav1dec:PRIMARY
  +
  +
==== ドライバのホワイトリストを無視する ====
  +
  +
GStreamer [https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/blob/master/gst/vaapi/gstvaapipluginutil.c#L952 は、VA-API ドライバのホワイトリスト]を使用しています。ホワイトリストを無視して他のドライバのサポートを許可するには、[[環境変数]] に {{ic|1=GST_VAAPI_ALL_DRIVERS=1}} を設定してください。
  +
  +
==== VA-API のサポート状況を確認する ====
  +
  +
VA-API サポートを確認するには:
  +
  +
{{hc|$ gst-inspect-1.0 va|2=
  +
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
  +
}}
  +
  +
{{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
  +
Documentation https://gstreamer.freedesktop.org/documentation/vaapi/
  +
Source release date ''date''
  +
Binary package gstreamer-vaapi
  +
Origin URL https://archlinux.org/
  +
  +
vaapiav1dec: VA-API AV1 decoder
  +
vaapidecodebin: VA-API Decode Bin
  +
vaapih264dec: VA-API H264 decoder
  +
vaapih264enc: VA-API H264 encoder
  +
vaapih265dec: VA-API H265 decoder
  +
vaapih265enc: VA-API H265 encoder
  +
vaapijpegdec: VA-API JPEG decoder
  +
vaapijpegenc: VA-API JPEG encoder
  +
vaapimpeg2dec: VA-API MPEG2 decoder
  +
vaapimpeg2enc: VA-API MPEG-2 encoder
  +
vaapioverlay: VA-API overlay
  +
vaapipostproc: VA-API video postprocessing
  +
vaapisink: VA-API sink
  +
vaapivc1dec: VA-API VC1 decoder
  +
vaapivp8dec: VA-API VP8 decoder
  +
vaapivp9dec: VA-API VP9 decoder
  +
vaapivp9enc: VA-API VP9 encoder
  +
  +
17 features:
  +
+-- 17 elements
  +
}}
  +
  +
==== NVDECODE/NVENCODE サポートを確認する ====
  +
  +
NVDECODE/NVENCODE の対応状況を確認するには:
  +
  +
{{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>
  +
  +
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]] ユーザーは {{Pkg|gst-libav}} が [https://gstreamer.freedesktop.org/documentation/nvcodec/index.html nvcodec] デコーダよりも Libav デコーダを優先してしまい、ハードウェアアクセラレーションを阻害してしまうことがあります。その為 {{ic|GST_PLUGIN_FEATURE_RANK}} があります。[[環境変数]] を使ってデコーダーのランク付けを行い、この問題を緩和することができます。詳しくは [https://gstreamer.freedesktop.org/documentation/gstreamer/running.html#environment-variables ドキュメント] の "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 ハードウェアをサポートしていない場合や、無効にしたい場合、上記のリストに {{ic|avdec_av1:NONE}} と {{ic|av1dec:NONE}} を追加して下さい。(例えば {{Pkg|webkit2gtk}} 上の YouTube などで) 無効にできます。
録画ソフトウェアで動画を録画しようとしたときに {{ic|GStreamer-CRITICAL **: gst_mini_object_unref: assertion
 
`mini_object->refcount > 0' failed}} というエラーが発生する場合、{{Pkg|gstreamer0.10-ffmpeg}} をインストールすれば解決します。
 
   
 
== 参照 ==
 
== 参照 ==

2024年2月27日 (火) 00:12時点における最新版

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 を便利にするには、必要なプラグインパッケージをインストールして下さい。各プラグインの機能のリストについては、公式ドキュメント を参照してください。

Usage

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

PipeWire

PipeWire のサポートは gst-plugin-pipewire パッケージで提供されます。

KDE / Phonon の統合

KDE#Phonon を見て下さい。

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

GStreamer は、正しい API [1] を自動的に検出して使用します。システムに応じて インストール する場合:

  • VA-API サポートの場合:
    • gstreamer-vaapi: 古い実装。GStreamer 1.24 で非推奨になる予定です。または
    • gst-plugin-va: 新しい実験的な実装であり、GStreamer 1.24 ではデ​​フォルトになります。
  • NVDECODE/NVENCODE サポート用の gst-plugins-bad および nvidia-utils

パッケージをインストールした後に新しい要素が表示されない場合は、プラグインレジストリを削除して再構築することをお勧めします。通常はこれで十分です

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

Gstreamer は次回の呼び出し時にレジストリを再構築します。これには通常数秒かかります。

gst-plugin-va でデコーダの優先順位を設定する

gst-plugin-va のデコーダーはデフォルトで 0 ランクになっており、ソフトウェアデコーダーがそれらよりも優先されることを意味します。GStreamer 1.24 で変更 される予定ですがそれまでは、次の 環境変数 によって高い優先度を追加できます:

GST_PLUGIN_FEATURE_RANK=vah264dec:PRIMARY,vah265dec:PRIMARY,vavp8dec:PRIMARY,vavp9dec:PRIMARY,vampeg2dec:PRIMARY,vaav1dec:PRIMARY

ドライバのホワイトリストを無視する

GStreamer は、VA-API ドライバのホワイトリストを使用しています。ホワイトリストを無視して他のドライバのサポートを許可するには、環境変数GST_VAAPI_ALL_DRIVERS=1 を設定してください。

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
$ 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
  Documentation            https://gstreamer.freedesktop.org/documentation/vaapi/
  Source release date      date
  Binary package           gstreamer-vaapi
  Origin URL               https://archlinux.org/

  vaapiav1dec: VA-API AV1 decoder
  vaapidecodebin: VA-API Decode Bin
  vaapih264dec: VA-API H264 decoder
  vaapih264enc: VA-API H264 encoder
  vaapih265dec: VA-API H265 decoder
  vaapih265enc: VA-API H265 encoder
  vaapijpegdec: VA-API JPEG decoder
  vaapijpegenc: VA-API JPEG encoder
  vaapimpeg2dec: VA-API MPEG2 decoder
  vaapimpeg2enc: VA-API MPEG-2 encoder
  vaapioverlay: VA-API overlay
  vaapipostproc: VA-API video postprocessing
  vaapisink: VA-API sink
  vaapivc1dec: VA-API VC1 decoder
  vaapivp8dec: VA-API VP8 decoder
  vaapivp9dec: VA-API VP9 decoder
  vaapivp9enc: VA-API VP9 encoder

  17 features:
  +-- 17 elements

NVDECODE/NVENCODE サポートを確認する

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-libavnvcodec デコーダよりも Libav デコーダを優先してしまい、ハードウェアアクセラレーションを阻害してしまうことがあります。その為 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:NONEav1dec:NONE を追加して下さい。(例えば webkit2gtk 上の YouTube などで) 無効にできます。

参照