「GStreamer」の版間の差分
(→デコーダーランクを設定する: 情報を更新) |
(→ハードウェアアクセラレーション: 同期) |
||
80行目: | 80行目: | ||
=== ハードウェアアクセラレーション === |
=== ハードウェアアクセラレーション === |
||
+ | GStreamer は、正しい API [https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html] を自動的に検出して使用します。システムに応じて [[インストール]] する場合: |
||
− | [[ハードウェアビデオアクセラレーション]]を見てください。 |
||
+ | * [[VA-API]] サポートの場合: |
||
− | GStreamer は自動的に正しい API を検出し、使用します [https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html] システム [[インストール]] に依存します。 |
||
+ | ** {{pkg|gstreamer-vaapi}}: 古い実装。GStreamer 1.24 で非推奨になる予定です。または |
||
− | * [[VA-API]] をサポートするために必要な {{pkg|gstreamer-vaapi}} |
||
+ | ** {{pkg|gst-plugin-va}}: 新しい実験的な実装であり、GStreamer 1.24 ではデフォルトになります。 |
||
− | * NVDECODE/NVENCODE をサポートするために必要な {{pkg|gst-plugins-bad}} と {{pkg|nvidia-utils}} |
||
+ | * NVDECODE/NVENCODE サポート用の {{pkg|gst-plugins-bad}} および {{pkg|nvidia-utils}} |
||
+ | |||
+ | パッケージをインストールした後に新しい要素が表示されない場合は、プラグインレジストリを削除して再構築することをお勧めします。通常はこれで十分です |
||
+ | |||
+ | $ rm ~/.cache/gstreamer-1.0/registry.*.bin |
||
+ | |||
+ | Gstreamer は次回の呼び出し時にレジストリを再構築します。これには通常数秒かかります。 |
||
==== ドライバのホワイトリストは無視する ==== |
==== ドライバのホワイトリストは無視する ==== |
2024年2月26日 (月) 22: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 を役立てるには、プラグインパッケージのインストールが必要になります:
- gst-libav - 多数のデコーダとエンコーダが含まれている libav ベースのプラグイン。
- gst-plugins-bad - 品質テストやドキュメントが必要とされるプラグイン。
- gst-plugins-base - 重要で典型的な基本セット。
- gst-plugins-good - LGPL ライセンスで配布されている高品質のプラグイン。
- gst-plugins-ugly - 配布に問題がある高品質のプラグイン。
- gst-plugin-libde265AUR - gstreamer 用の libde265 プラグイン (オープンな h.265 動画コーデックの実装)。
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 は次回の呼び出し時にレジストリを再構築します。これには通常数秒かかります。
ドライバのホワイトリストは無視する
GStreamer は、VA-API ドライバのホワイトリストを使用しています。ホワイトリストを無視して他のドライバのサポートを許可するには、環境変数 に GST_VAAPI_ALL_DRIVERS=1
を設定してください。
VA-API のサポート状況を確認する
VA-API サポートを確認するには
$ 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
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-libav が nvcodec デコーダよりも 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:NONE
と av1dec:NONE
を追加して下さい。(例えば webkit2gtk 上の YouTube などで) 無効にできます。