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

概要

GStreamer は強力なマルチメディアフレームワークで、効率的な映像ストリーミングと処理を可能にします。exploreHD はハードウェアアクセラレートされた H.264MJPEG、生の YUYV など複数の圧縮フォーマットをサポートしています。

必要要件

このために 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

デバイスノードの特定

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

ハードウェア H.264 モード

exploreHD は内蔵のハードウェア H.264 エンコーディングを搭載しており、低ビットレートで高品質な映像を最小限の CPU 負荷で提供します。

ローカルプレビュー

H.264 ストリームをローカルで表示するには(/dev/video2 が H.264 ノードと仮定):
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! avdec_h264 ! autovideosink

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

H.264 映像を他のデバイス(例: IP 192.168.1.50、ポート 5600)へネットワーク経由でストリーミングするには:
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! queue ! rtph264pay config-interval=10 pt=96 ! \
    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)H264, payload=(int)96" ! \
    rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

MJPEG モード

MJPEG モードは互換性が高く、低遅延で良好な画質を提供します。

ローカルプレビュー

/dev/video0 を MJPEG ノードと仮定:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    jpegdec ! autovideosink

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

MJPEG をネットワーク経由でストリーミングするには:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    rtpjpegpay ! udpsink host=192.168.1.50 port=5600

YUYV モード

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

ローカルプレビュー

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

高度なビットレート制御

H.264 モード使用時には、パイプライン実行中に V4L2 コントロールを使用してビットレートやその他のエンコーダパラメータを調整できます。
# 例: ビットレートを 5Mbps に設定
v4l2-ctl -d /dev/video2 --set-ctrl=video_bitrate=5000000