メインコンテンツへスキップ

概要

GStreamer は、効率的な映像ストリーミングと処理を可能にする強力なマルチメディアフレームワークです。stellarHD は MJPEG およびロー YUYV の圧縮形式をサポートし、最大 60 FPS の高フレームレートに対応しています。

必要環境

これを行うには、Linux コンピューターに GStreamer がインストールされている必要があります。次のインストールコマンドを使用して、必要なパッケージを取得できます。
sudo apt install v4l-utils libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-plugins-ugly

デバイスノードの特定

stellarHD カメラを接続すると、Linux カーネル(V4L2 経由)は通常、4 つのデバイスノードを作成します(例: /dev/video0 から /dev/video3 まで)。
  • MJPEG / YUYV: グループの最初のノード(例: /dev/video0)にあります。
v4l2-ctl を使用してデバイスノードを確認できます。
v4l2-ctl --list-devices
stellarHD に対応するエントリを探してください。そのカメラに関連付けられたパスが一覧表示されます。

MJPEG モード

MJPEG モードは、stellarHD で高フレームレート(最大 60 FPS)を実現するための主な方法です。

ローカルプレビュー

/dev/video0 が MJPEG ノードであると仮定:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1600,height=1200,framerate=60/1 ! \
    jpegdec ! autovideosink

UDP ネットワークストリーム

MJPEG をネットワーク経由で別のデバイスへ(例: IP 192.168.1.50、ポート 5600)ストリーミングするには:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1600,height=1200,framerate=60/1 ! \
    rtpjpegpay ! udpsink host=192.168.1.50 port=5600
別のコンピューターでストリームを受信するには、次のコマンドを使用できます:
gst-launch-1.0 -v udpsrc port=5600 ! \
    "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)26" ! \
    rtpjpegdepay ! jpegdec ! videoconvert ! autovideosink

YUYV モード

YUYV は USB 帯域幅の制限により、高解像度では低フレームレートに制限されることに注意してください。

ローカルプレビュー

/dev/video0 がノードであると仮定:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    video/x-raw,format=YUY2,width=640,height=480,framerate=5/1 ! \
    videoconvert ! autovideosink
YUYV モードでサポートされる解像度とフレームレートの組み合わせについては、stellarHD 技術仕様を参照してください。

ソフトウェアエンコーディング(H.264)

stellarHD にはハードウェア H264 エンコーダーが内蔵されていないため、ネットワーク経由で H264 をストリーミングする必要がある場合は、GStreamer を使用してソフトウェアエンコーディングを実行できます。
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1280,height=720,framerate=60/1 ! \
    jpegdec ! queue ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! \
    h264parse ! rtph264pay config-interval=10 pt=96 ! \
    udpsink host=192.168.1.50 port=5600