🎃
GStreamerメモ
-
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.
-
調べ方が難しいので,わかる範囲でメモ。
コマンド例
- 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