Загрузка данных
Available cameras:
1: External camera 'mx95mbcam' (/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@0/mx95mbcam@40)
2: External camera 'mx95mbcam' (/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@1/mx95mbcam@40)
3: External camera 'mx95mbcam' (/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@2/mx95mbcam@40)
4: External camera 'mx95mbcam' (/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@3/mx95mbcam@40)
1) 4-camera to display
gst-launch-1.0 imxcompositor_g2d name=mix sink_0::xpos=0 sink_0::ypos=0 sink_0::width=960 sink_0::height=540 sink_1::xpos=960 sink_1::ypos=0 sink_1::width=960 sink_1::height=540 sink_2::xpos=0 sink_2::ypos=540 sink_2::width=960 sink_2::height=540 sink_3::xpos=960 sink_3::ypos=540 sink_3::width=960 sink_3::height=540 ! video/x-raw,width=1920,height=1080 ! queue ! waylandsink libcamerasrc camera-name="/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@0/mx95mbcam@40" ! video/x-raw,format=YUY2,width=1920,height=1280 ! queue ! mix.sink_0 libcamerasrc camera-name="/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@1/mx95mbcam@40" ! video/x-raw,format=YUY2,width=1920,height=1280 ! queue ! mix.sink_1 libcamerasrc camera-name="/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@2/mx95mbcam@40" ! video/x-raw,format=YUY2,width=1920,height=1280 ! queue ! mix.sink_2 libcamerasrc camera-name="/base/soc/bus@42000000/i2c@42540000/max96724@27/i2c-mux/i2c@3/mx95mbcam@40" ! video/x-raw,format=YUY2,width=1920,height=1280 ! queue ! mix.sink_3
2)
insmod /lib/modules/6.18.2-1.0.0-g0f0acbc9e776/kernel/drivers/media/v4l2-core/v4l2loopback.ko video_nr=63,64,65,66 card_label="DVR_1080p_Stream1","DVR_1080p_Stream2","DVR_1080p_Stream3","DVR_1080p_Stream4" exclusive_caps=1,1,1,1
v4l2-ctl --list-devices:
DVR_1080p_Stream1 (platform:v4l2loopback-063):/dev/video63
DVR_1080p_Stream2 (platform:v4l2loopback-064):/dev/video64
DVR_1080p_Stream3 (platform:v4l2loopback-065):/dev/video65
DVR_1080p_Stream4 (platform:v4l2loopback-066):/dev/video66
# Сервер для CSI-камеры 1 (Порт 8554, путь /test)
test-launch -p 8554 "( tcpclientsrc host=127.0.0.1 port=5000 ! video/x-h265, stream-format=(string)byte-stream ! h265parse config-interval=1 ! rtph265pay name=pay0 pt=96 )" &
# Сервер для CSI-камеры 2 (Порт 8555, путь /test)
test-launch -p 8555 "( tcpclientsrc host=127.0.0.1 port=5001 ! video/x-h265, stream-format=(string)byte-stream ! h265parse config-interval=1 ! rtph265pay name=pay0 pt=96 )" &
# Сервер для CSI-камеры 3 (Порт 8556, путь /test)
test-launch -p 8556 "( tcpclientsrc host=127.0.0.1 port=5002 ! video/x-h265, stream-format=(string)byte-stream ! h265parse config-interval=1 ! rtph265pay name=pay0 pt=96 )" &
# Сервер для CSI-камеры 4 (Порт 8557, путь /test)
test-launch -p 8557 "( tcpclientsrc host=127.0.0.1 port=5003 ! video/x-h265, stream-format=(string)byte-stream ! h265parse config-interval=1 ! rtph265pay name=pay0 pt=96 )" &
1) Надо запустить все 4 камеры одновременно и перенаправить каждую отдельно на DVR.
2) Надо запустить все 4 камеры одновременно и перенаправить каждую отдельно на RTSP.
Пример старого образца: перенаправление на DVR(1080p), Отображение(640p),RTSP(720p):
gst-launch-1.0 libcamerasrc camera-name="/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36" ! video/x-raw,width=1920,height=1080,format=YUY2 ! tee name=main_tee main_tee. ! queue max-size-buffers=2 leaky=downstream ! imxvideoconvert_g2d ! video/x-raw,width=1920,height=1080 ! v4l2sink device=/dev/video64 main_tee. ! queue max-size-buffers=2 leaky=downstream ! imxvideoconvert_g2d ! video/x-raw,width=640,height=360 ! v4l2sink device=/dev/video63 main_tee. ! queue max-size-buffers=2 leaky=downstream ! imxvideoconvert_g2d ! video/x-raw,width=1280,height=720 ! v4l2h265enc ! video/x-h265,stream-format=byte-stream ! h265parse ! tcpserversink host=127.0.0.1 port=5000