Raspberry Pi libcamerasrc 和 GStreamer RTSP 服务器

问题描述 投票:0回答:1

我有一个 Raspberry Pi 4,32 位操作系统; GStreamer 1.18,Arducam 64MP 鹰眼相机。
我正在尝试使用 GStreamer 创建 RTSP 流。我在辅助计算机上使用 VLC 来验证流。

我成功构建了 GStreamer RTSP 服务器(测试启动):

./test-launch --gst-debug=3 '( videotestsrc ! video/x-raw,width=1280,height=720,format=I420,framerate=10/1 ! queue ! x264enc ! queue ! h264parse ! rtph264pay name=pay0 pt=96 )'

上述管道运行良好 - 没有警告、错误等。所以,我想我可以用 libcamerasrc 替换测试源。

 ./test-launch --gst-debug=3 '( libcamerasrc ! video/x-raw,width=1280,height=720,format=I420,framerate=10/1 ! queue ! x264enc ! queue ! h264parse ! rtph264pay name=pay0 pt=96 )'

0:00:00.002252699  2750  0x130f680 WARN         GST_PERFORMANCE gstbuffer.c:496:_priv_gst_buffer_initialize: No 64-bit atomic int defined for this platform/toolchain!
stream ready at rtsp://127.0.0.1:8554/test
[2:28:52.686563784] [2752]  INFO Camera camera_manager.cpp:297 libcamera v0.0.0+4367-ad9428b4
[2:28:52.726008528] [2753]  WARN CameraSensorProperties camera_sensor_properties.cpp:261 No static properties available for 'arducam_64mp'
[2:28:52.726127063] [2753]  WARN CameraSensorProperties camera_sensor_properties.cpp:263 Please consider updating the camera sensor properties database
[2:28:52.818015917] [2753]  INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/arducam_64mp@1a to Unicam device /dev/media3 and ISP device /dev/media1
0:00:04.291297745  2750 0xf5d420e8 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<libcamerasrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
[2:28:52.850803303] [2758]  INFO Camera camera.cpp:1033 configuring streams: (0) 1280x720-YUV420
[2:28:52.852476027] [2753]  INFO RPI vc4.cpp:572 Sensor: /base/soc/i2c0mux/i2c@1/arducam_64mp@1a - Selected sensor format: 1280x720-SRGGB10_1X10 - Selected unicam format: 1280x720-pRAA
0:00:24.149406551  2750  0x14c7100 WARN               rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:24.149480328  2750  0x14c7100 WARN               rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:24.665921409  2750  0x14c7100 ERROR             rtspclient rtsp-client.c:1087:find_media: client 0x14c1a08: can't prepare media
0:00:24.666612957  2750  0x14c7100 ERROR             rtspclient rtsp-client.c:3346:handle_describe_request: client 0x14c1a08: no media

我假设我对来源的理解是错误的。有人在 Raspberry Pi 4 上使用 Arducam 64 MP Hawkeye 摄像头创建了基于 GStreamer 的 RTSP 流吗? (我将使用 NVIDIA Deepstream 来使用该流。)

raspberry-pi gstreamer rtsp-server
1个回答
0
投票

阅读手册 - 在这里找到更多信息: https://www.waveshare.com/wiki/RPi_Camera_(I)

原生 libcamera-vid 驱动程序应用程序提供了足够多的功能,因此我为了简单的 RTSP 流而放弃了 GStreamer。上面引用的文档还解释了在 GStreamer 管道中提供源的正确方法。我假设使用 libcamera 驱动程序比完整 GStreamer 管道的开销更快,所以我坚持使用 libcamera。

这是我最终的 libcamera 管道:

libcamera-vid -n --framerate=2 -t 0 --denoise=cdn_off --autofocus-mode=manual --lens-position=0 --level=4.2 --width=1248 --height=384 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

这可行,但效果不是很好。表现普遍很糟糕。结论:很棒的相机,很棒的驱动程序,但 RPI 上的编码性能不够。结果我没有微调这个管道。我没有让手动对焦按预期工作。我还放弃了 ROI 功能(这对 Deepstream 很有用)。我重新开始使用 NVIDIA Jetsons。我希望 Arducam 使这款相机与 Jetsons 兼容,就像他们的 IMX477 产品一样。

如果有人可以建议如何提高上述DAG的性能和稳定性,请回复。这款相机给我留下了深刻的印象,并希望更好地使用它。

© www.soinside.com 2019 - 2024. All rights reserved.