GStreamer勉強会 第1回 カメラ映像をリアルタイムに表示してみよう!
こんにちは!本記事は「GStreamer勉強会」シリーズの第1回です。
- 第1回 : 本記事
- 第2回 : https://qiita.com/segur/items/e88a293cf9dc49ed08ec
第1回は、 PCに接続されたカメラの映像を表示 してみます。
インストール手順
以下のコマンドで GStreamer をインストールします。
macOSの場合
brew install gstreamer gst-plugins-base gst-plugins-good
Windowsの場合
choco install gstreamer --package-parameters="'/Full'" -y
インストールが完了したら、一旦、ターミナルを再起動しましょう。
カメラ映像を表示する
以下のコマンドで、カメラ映像をウィンドウにリアルタイム表示できます!
macOSの場合
gst-launch-1.0 avfvideosrc ! videoconvert ! queue ! autovideosink
Windowsの場合
gst-launch-1.0 mfvideosrc ! videoconvert ! queue ! autovideosink
- 初回実行時にカメラの使用許可を求められる場合があります
- macOSの場合、
設定 > プライバシーとセキュリティ > カメラ
から、ターミナルにカメラの使用を許可してください
カメラが映らないときの対処法
- Zoom, OBS, Teams等の他のアプリがカメラを使用中でしたら、止めてください。
-
gst-launch-1.0
の後に-v
オプションをつけて実行すると、詳細なログが表示されます
使用エレメントの解説
GStreamer では、エレメントと呼ばれる小さな処理単位をパイプラインでつなぎます。
エレメント | Windows | macOS | 役割 |
---|---|---|---|
mfvideosrc |
✅ | ❌ | カメラ入力(ソース)。Windows の Media Foundation を使用してカメラから映像を取得します。 |
avfvideosrc |
❌ | ✅ | カメラ入力(ソース)。macOS の AVFoundation を使用してカメラから映像を取得します。 |
videoconvert |
✅ | ✅ | 映像フォーマット変換。後続エレメントが扱える形式に整えます(ピクセルフォーマットなど)。 |
queue |
✅ | ✅ | 非同期バッファ。エレメント間の処理を独立させ、映像をスムーズに表示できるようにします。 |
autovideosink |
✅ | ✅ | 映像の表示。OSに応じた最適な描画バックエンドを自動で選び、画面に表示します。 |
!
の意味
!
は エレメント同士をつなぐ演算子です。
「このエレメントの出力を、次のエレメントの入力へ流す」という意味になります。
A ! B ! C
これは「A → B → C の順に処理される」ことを表します。
さいごに
次回は、GStreamer を使って カメラ映像をリアルタイムにRTSP配信する方法を解説します!