Gstreamer とにかく動いたコマンドは、かたっぱしから残しておく

2024年7月2日

Gstreamer とにかく動いたコマンドは、かたっぱしから残しておく

 

 

■docker ubuntu24.04 でとりあえず動いた対面コマンド

受信側
root@03232677082a:/home/cam# gst-launch-1.0 srtsrc uri=srt://:9999 keep-listening=true ! queue ! tsdemux ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

送信側
root@03232677082a:/home/cam# gst-launch-1.0 videotestsrc ! videoconvert ! x264enc ! mpegtsmux ! srtsink uri=srt://127.0.0.1:9999

■Windows10の環境でローカルループバックの環境

受信側
$ more ./srt_server.sh
#!/bin/bash
gst-launch-1.0 srtsrc uri=srt://:9999 keep-listening=true ! decodebin ! glimagesink

送信側
$ more ./srt_rtsp_client.sh
#!/bin/bash
gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.11/Src/MediaInput/stream_1 latency=0 !
rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=360 ! videorat
e ! video/x-raw,framerate=5/1 ! x264enc bitrate=1700 speed-preset=ultrafast tune=zerolatency key-int
-max=1 ! mpegtsmux ! srtserversink uri=srt://127.0.0.1:9999 latency=500

 

■Gstreamerでの受信側で、送信側での巻き添えで落ちないコマンドは、その前提として、
$gst-launch-1.0 --version
gst-launch-1.0 version 1.22.0
GStreamer 1.22.0
Unknown package origin
とバージョンアップした上で、

gst-launch-1.0 srtsrc uri="srt://0.0.0.0:38089?mode=listener" keep-listening=true ! tsdemux ! h264parse ! avdec_h264 ! videoconvert ! fpsdisplaysink sync=false

で巻き添え落ちが発生しなくなった。

■bitrateを落して低品質映像を送る

gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1 latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=360 ! videorate ! video/x-raw,framerate=5/1 ! x264enc bitrate=500 speed-preset=ultrafast tune=zerolatency key-int-max=1 ! mpegtsmux ! srtserversink uri = \"srt://192.168.101.10:38089\" latency=500

 

(パナソニック(×JVC)のカメラ)

■転送実験用(送信側)

gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1 latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=360 ! videorate ! video/x-raw,framerate=10/1 ! x264enc speed-preset=ultrafast tune=zerolatency key-int-max=10 ! mpegtsmux ! srtserversink uri = \"srt://127.0.0.1:38089\" latency=5

■転送実験用(受信側)

gst-launch-1.0 srtsrc uri="srt://0.0.0.0:38089?mode=listener" ! tsdemux ! h264parse ! avdec_h264 ! videoconvert ! fpsdisplaysink sync=false

 

gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1  latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink

gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1 latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=360 ! videorate ! video/x-raw,framerate=5/1 ! autovideosink

 

(RTSPカメラ映像を画面に表示する)
gst-launch-1.0 rtspsrc location=rtsp://192.168.0.2/ONVIF/Streaming/channels/0 ! rtph264depay ! h264parse ! avdec_h264 ! queue ! autovideosink

mp4ファイルの繰り返し送信をするコマンドの例(ただガタガタする)
ffmpeg -stream_loop -1 -i 192.168.1.8.mp4 -vf "scale=640:360, fps=0.1" -c:v libx264 -preset ultrafast -tune zerolatency -x264-params "keyint=10:scenecut=0" -maxrate 1M -bufsize 2M -c:a copy -f mpegts "srt://192.168.1.217:38089?latency=5000000"
(今後、色々改善を試みる)

 

良い参考→ https://notes.yh1224.com/tech/gstreamer/gstreamer-examples/

(文字を大きく表示)
gst-launch-1.0 -e videotestsrc pattern=snow  ! video/x-raw,width=640,height=480,framerate=30/1 ! textoverlay text="おわかりいただけただろうか...?" font-desc="Sans 48" ! autovideosink

gst-launch-1.0 -e videotestsrc pattern=snow num-buffers=300 ! video/x-raw,width=640,height=480,framerate=30/1 ! textoverlay text="<span foreground='#0000BB'>おわかりいただけただろうか...?</span>" ! autovideosink
(https://qiita.com/araki-yzrh/items/2bd1fc899ea157f704e4)

gst-launch-1.0 -e videotestsrc pattern=snow num-buffers=300 ! video/x-raw,width=640,height=480,framerate=30/1 ! textoverlay text="おわかりいただけただろうか...?" ! autovideosink

gst-launch-1.0 videotestsrc pattern=ball do-timestamp="true" ! videoconvert ! autovideosink (超高速移動ボール)  動きのあるものとしては snow, blink

gst-launch-1.0.exe -v filesrc location=file.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

gst-launch-1.0 rtspsrc location=rtsp://192.168.0.2/ONVIF/Streaming/channels/0 latency=0 buffer-mode=0 drop-on-latency=true ! rtph264depay ! h264parse ! queue ! avdec_h264 ! videoscale ! video/x-raw, width=640, height=360 ! videorate ! video/x-raw, framerate=5/1 ! x264enc speed-preset=ultrafast tune=zerolatency key-int-max=10 ! mpegtsmux ! srtserversink uri="srt://192.168.1.217:38089" latency=5

gst-launch-1.0 filesrc location=192.168.1.1.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw, width=640, height=360 ! videorate ! video/x-raw, framerate=5/1 ! x264enc speed-preset=ultrafast tune=zerolatency key-int-max=10 ! mpegtsmux ! srtserversink uri="srt://192.168.1.217:38089" latency=5

 

2024年7月2日2024,江端さんの技術メモ

Posted by ebata