GStreamer のプラグイン

マルチメディア ユーザー ガイド (UG1449)

Document ID
UG1449
Release Date
2022-04-21
Revision
1.4 日本語

GStreamer は、メディア処理コンポーネントのグラフを作成するためのライブラリです。再生やオーディオ/ビデオ ストリーミングといった単純なものから、オーディオ処理 (ミキシング) やビデオ処理といった複雑なものまで、幅広いアプリケーションをサポートします。

GStreamer はプラグイン アーキテクチャを使用しており、GStreamer の機能のほとんどは共有ライブラリとして実装されています。GStreamer にはプラグインの登録とロードに関する機能のほか、すべてのクラスに対してベース クラスの形で基盤を提供するという基本的な機能が含まれます。プラグイン ライブラリを動的にロードすることにより、幅広いコーデック、コンテナー フォーマット、および入力/出力ドライバーをサポートします。

次の表で、GStreamer インターフェイス ライブラリで使用するプラグインについて説明します。

表 1. 検証済み GStreamer プラグイン
プラグイン 説明
v4l2src

v4l2src は、ザイリンクス HDMI-RX や TPG などの V4L2 デバイスからビデオをキャプチャする目的で使用します。

kmssink

kmssink は、DRM デバイスのプレーンに RAW ビデオ フレームを直接レンダリングするシンプルなビデオ シンクです。

パイプラインの例:

gst-launch-1.0 v4l2src ! “video/x-raw, format=NV12, width=3840, 
height=2160” !kmssink
h26xparse

H.26x でエンコードされたストリームを解析します。

パイプラインの例:

gst-launch-1.0 filesrc location=/media/card/abc.mp4 ! qtdemux ! h26xparse !
omxh26xdec ! kmssink							
omxh26xdec omxh26xdec は、エンコードされたビデオ フレームをハードウェア アクセラレーションによってデコードするビデオ デコーダーです。

パイプラインの例:

gst-launch-1.0 filesrc location=/media/card/abc.mp4 ! qtdemux ! h26xparse ! 
omxh26xdec ! kmssink

このパイプラインは、mp4 に多重化したファイルを示しています。エンコードされたビデオのエンコード フォーマットは h26x です。

注記: H264 デコードには omxh264dec を使用し、H265 デコードには omxh265dec を使用します。h264parse は H.264 でエンコードされたストリームを解析します。h265parse は H.265 でエンコードされたストリームを解析します。
omxh26xenc

omxh26xenc は、RAW ビデオ フレームをハードウェア アクセラレーションによってエンコードするビデオ エンコーダーです。

パイプラインの例:

gst-launch-1.0 v4l2src ! omxh26xenc ! filesink location=out.h26x

このパイプラインは、RAW データを送信する V4L2 デバイスからキャプチャしたビデオを示しています。データは h26x ビデオにエンコードされ、ファイルに保存されます。

注記: H264 エンコードには omxh264enc を使用し、H265 エンコードには omxh265enc を使用します。
alsasrc

ザイリンクス HDMI-RX などのオーディオ デバイスからオーディオをキャプチャするには、alsasrc プラグインを使用します。

パイプラインの例:

gst-launch-1.0 alsasrc device=hw:1,1 ! queue ! audioconvert ! 
audioresample ! audio/x-raw, rate=48000, channels=2, format=S24_32LE 
! alsasink device="hw:1,0"

このパイプラインは、ALSA ソースからキャプチャしたオーディオを ALSA シンクで再生します。

alsasink

alsasink は、RAW オーディオ フレームを再生するだけのシンプルなオーディオ シンクです。

パイプラインの例:

gst-launch-1.0 alsasrc device=hw:1,1 ! queue ! audioconvert ! 
audioresample ! audio/x-raw, rate=48000, channels=2, format=S24_32LE 
! alsasink device="hw:1,0"

このパイプラインは、ALSA ソースからキャプチャしたオーディオを ALSA シンクで再生します。

faad 1

デコーダー faad は、エンコードされたオーディオ フレームをデコードするオーディオ デコーダーです。

パイプラインの例:

gst-launch-1.0 filesrc location=out.ts ! tsdemux ! aacparse ! faad ! 
audioconvert ! audioresample ! audio/x-raw,rate=48000,channels=2, 
format=S24_32LE ! alsasink device="hw:1,0"

このパイプラインは、.ts に多重化したファイルを示しています。オーディオのエンコード フォーマットは aac です。データをデコードして、ALSA シンク デバイスで再生します。

faac 1 faac は、RAW オーディオ フレームをエンコードするオーディオ エンコーダーです。

パイプラインの例:

gst-launch-1.0 alsasrc device=hw:1,1 num-buffers=500 ! 
audio/x-raw, format=S24_32LE, rate=48000 ,channels=2 ! queue ! audioconvert ! 
audioresample ! faac ! aacparse ! mpegtsmux ! filesink location=out.ts

このパイプラインは、RAW データを送信する ALSA デバイスからキャプチャしたオーディオを示しています。データは aac フォーマットにエンコードされ、ファイルに保存されます。

xilinxscd

xilinxscd は、ビデオ ストリームのシーン変化をハードウェア アクセラレーションによって検出する IP です。このプラグインは、入力ビデオ ストリームにシーン変化があるとアップストリーム イベントを生成します。これにより、エンコーダーは I フレームを挿入してビデオ品質を改善できます。

パイプラインの例:

gst-launch-1.0 -v v4l2src ! video/x-raw, width=3840, height=2160, 
format=NV12, framerate=60/1 ! xilinxscdio-mode=5 ! omxh26xenc ! 
filesink location=/run/out.h26x

このパイプラインは、RAW データを送信する V4L2 デバイスからキャプチャしたビデオを示しています。xilinxscd プラグインは、この RAW データを受け取ると動作中にストリームを解析し、エンコーダーにイベントを送信します。このイベントに基づき、エンコーダーはビデオ ストリームでシーン変化が検出されたかどうかを判断します。エンコーダーは、この情報を使用して I フレームを挿入し、ビットストリームをエンコードします。

注記: H264 エンコードには omxh264enc を使用し、H265 エンコードには omxh265enc を使用します。
appsrc アプリケーションで appsrc エレメントを使用すると、GStreamer パイプラインにデータを挿入できます。ほとんどの GStreamer エレメントとは異なり、appsrc には外部 API 関数があります。
appsink appsink は、多くの種類のメソッドをサポートしたシンク プラグインで、アプリケーションはこれを使用してパイプライン内で GStreamer データを管理できます。ほとんどの GStreamer エレメントとは異なり、appsink には外部 API 関数があります。
queue max-size-buffersmax-size-bytesmax-size-time のプロパティで指定した上限値のいずれか 1 つに達するまでデータをキューに格納します。
  1. faac/faad プラグインは、現在コミュニティでの更新やメンテナンスは停止しています。これに代わるものとして、ノイズを軽減したより高音質な Opus コーデック (opusenc/opusdec) があります。

詳細は、 『H.264/H.265 Video Codec Unit LogiCORE IP 製品ガイド』 (PG252) を参照してください。