🎃

GStreamerメモ

2023/03/03に公開
  • GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.

  • Download

  • 調べ方が難しいので,わかる範囲でメモ。

コマンド例

  • ex1) テストビデオ信号を再生表示
gst-launch-1.0 -v videotestsrc ! autovideosink
  • ex2) HOGE.mp4を再生表示
gst-launch-1.0 -v filesrc location=HOGE.mp4 ! decodebin ! autovideosink
  • ex3) 利用可能なvideo/audio機器を一覧表示(DEVICE_PATHや利用可能なオプションも表示される)
gst-device-monitor-1.0
  • ex4) Webカメラをキャプチャして表示(Linux)
gst-launch-1.0 -v v4l2src device-path="{DEVICE_PATH}" ! videoconvert ! autovideosink
  • ex5) Webカメラをキャプチャして表示(Windows)
gst-launch-1.0 -v ksvideosrc device-path="{DEVICE_PATH}" ! videoconvert ! autovideosink
gst-launch-1.0 -v mfvideosrc device-path="{DEVICE_PATH}" ! videoconvert ! autovideosink
  • ex6) テストビデオ信号を320x240,30fps,H264エンコードでRTPストリーム化,127.0.0.1:5005(UDP)に向かって非同期的に配信
gst-launch-1.0 -v videotestsrc ! video/x-raw,width=320,height=240,framerate=30/1 ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=5005 sync=false
  • ex7) H264エンコードのRTPストリームをlocalhost:5005(UDP)で受信して表示
gst-launch-1.0 -v udpsrc port=5005 ! application/x-rtp,media=video ! queue ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink

OpenCVのバックエンドとしてビルド

  • GStreamerビルドするとネットワークストリーム配信ができるようになる。
  • GStreamerビルドしない場合のデフォルトバックエンドはffmpeg。
  • 筆者はOpenCvSharpで実施。
    • WindowsのOpenCvSharpでのビルド方法
    • C++やPythonのOpenCVでも途中までは同じ。
    • C#の場合,最近のOpenCVではvideoioモジュールがいじられているせいでビルド時にリンカーエラーが出るようになった。
    • Solution: OpenCvSharpExtern→Properties→Linker→Input→AdditionalDependenciesにgstaudio-1.0.libも追加。
    • OpenCV 4.5.5 with GStreamer compilation issue with opencv_videoio #21393より。

Discussion