「GStreamer」の版間の差分
(英語版から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}} |
+ | * {{pkg|gstreamer-vaapi}} for [[VA-API]] support. |
− | * {{pkg|gst-plugins-bad}} - |
+ | * {{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 を役立てるには、プラグインパッケージのインストールが必要になります:
- 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:
- gstreamer-vaapi for VA-API support.
- gst-plugins-bad and nvidia-utils for NVDECODE/NVENCODE support.
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
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.