QuantumEntangledAndy / neolink

An RTSP bridge to Reolink IP cameras
GNU Affero General Public License v3.0
257 stars 41 forks source link

No rtsp stream from Reolink Argus Pro 3 #142

Closed MrMojoR closed 9 months ago

MrMojoR commented 10 months ago

Describe the bug I'm running from ARMv7 docker, my docker-compose looks like this:

version: "2"
services:
  neolink:
    image: quantumentangledandy/neolink
    container_name: neolink
    volumes:
      - /storage/neolink/neolink.toml:/etc/neolink.toml
    network_mode: host
    restart: unless-stopped

my neolink.toml looks like this:

bind = "0.0.0.0"

[[cameras]]
name = "kapu"
username = "admin"
password = "***"
address = "192.168.0.233"
uid = "****"
stream = "mainStream"

My docker log looks like this:

2023-08-28T10:24:32Z INFO  neolink] Neolink 0768bcf959515cc297d2c21a1a963e8c9ec7a031 release
[2023-08-28T10:24:34Z INFO  neolink::rtsp] Starting RTSP Server at 0.0.0.0:8554
[2023-08-28T10:24:34Z INFO  neolink_core::bc_protocol] kapu: Trying TCP discovery
[2023-08-28T10:24:34Z INFO  neolink_core::bc_protocol] kapu: Trying local discovery
[2023-08-28T10:24:34Z INFO  neolink_core::bc_protocol] kapu: Local discovery success **** at 192.168.0.233:26488
[2023-08-28T10:24:35Z INFO  neolink::rtsp::states::loggedin] kapu: Camera time is already set: 2023-08-28 13:24:33.0 -02:00:00
[2023-08-28T10:24:35Z INFO  neolink::rtsp::states::loggedin] kapu: Camera reports firmware version v3.0.0.1342_22092001
[2023-08-28T10:24:35Z INFO  neolink::rtsp::states::streaming] kapu: Starting video stream Main Stream (Clear)
[2023-08-28T10:24:44Z INFO  neolink::rtsp] kapu: Buffers prepared
[2023-08-28T10:24:58Z WARN  neolink::rtsp::gst::factory] Media send thead failed... restarting. Cause: Could not push buffer to appsrc

After I try to open the stream in VLC I receive this error in the log, in homeassistant when I try to add it as a generic camera, it connects, but no picture is displayed, what am I doing wrong?

Expected behavior The rtsp stream should be displayed in VLC.

QuantumEntangledAndy commented 10 months ago

Can't really tell from your log what might be up. You could try some things like setting buffer_size = 0, or using one of the older tags.

I'm working on a major rewrite of the code atm which will rewrite how buffers are pushed onto the app src so maybe it will help but the rewrite is still about a week away from completion.

MrMojoR commented 10 months ago

Ok, thanks for you hard work, I'm looking forward to it. Will try these suggestions.

QuantumEntangledAndy commented 10 months ago

If you could set the variable GST_DEBUG to 3 and try again it could provide more information. The log suggests that the gstreamer thread is failing so passing that variable might help. (This debug log can get huge though)

MrMojoR commented 10 months ago

It was working for a bit with buffer_size=0, but I have enabled cameras.pause feature, and there are new errors in the debug log:

0:01:46.392937440     6 0xf5706c78 WARN               rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:01:46.393041274     6 0xf5706c78 WARN               rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:01:46.399319727     6 0xf5706c78 ERROR             rtspclient rtsp-client.c:1087:find_media: client 0xabe8dfc8: can't prepare media
0:01:46.400606976     6 0xf5706c78 ERROR             rtspclient rtsp-client.c:3064:handle_setup_request: client 0xabe8dfc8: media '/kapu' not found
0:01:46.421804626     6 0xf5707338 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<audsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:01:46.427008956     6 0xf5707370 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<vidsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:01:46.434175075     6 0xf57073a8 WARN               h265parse gsth265parse.c:1311:gst_h265_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice_TRAIL_R, Size: 18616 will be dropped
QuantumEntangledAndy commented 10 months ago

I need more of the log, failed to preroll pipeline means that something went wrong LONG before this point. While the pipeline was being prepared

MrMojoR commented 10 months ago

Here is the full log, when starting then trying to connect with VLC:

[2023-08-29T09:18:49Z INFO  neolink] Neolink 0768bcf959515cc297d2c21a1a963e8c9ec7a031 release
[2023-08-29T09:18:49Z INFO  neolink::rtsp] Starting RTSP Server at 0.0.0.0:8554
[2023-08-29T09:18:49Z INFO  neolink_core::bc_protocol] kapu: Trying TCP discovery
[2023-08-29T09:18:49Z INFO  neolink_core::bc_protocol] kapu: Trying local discovery
[2023-08-29T09:18:49Z INFO  neolink_core::bc_protocol] kapu: Local discovery success ...... at 192.168.0.233:10637
[2023-08-29T09:18:50Z INFO  neolink::rtsp::states::loggedin] kapu: Camera time is already set: 2023-08-29 11:18:50.0 -01:00:00
[2023-08-29T09:18:50Z INFO  neolink::rtsp::states::loggedin] kapu: Camera reports firmware version v3.0.0.1342_22092001
[2023-08-29T09:18:50Z INFO  neolink::rtsp::states::streaming] kapu: Starting video stream Sub Stream (Fluent)
[2023-08-29T09:18:54Z INFO  neolink::rtsp] kapu: Buffers prepared
0:00:19.756479416     6 0xf6074c78 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<audsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:19.762998951     6 0xf6074c40 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<vidsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:19.764429825     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4485 will be dropped
0:00:19.764608366     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4208 will be dropped
0:00:19.766738823     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4514 will be dropped
0:00:19.769880528     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4316 will be dropped
0:00:19.775607356     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4948 will be dropped
0:00:19.775878981     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5200 will be dropped
0:00:19.777242813     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4168 will be dropped
0:00:19.777517855     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4218 will be dropped
0:00:19.779118520     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4604 will be dropped
0:00:19.779423353     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4459 will be dropped
0:00:19.780812893     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5167 will be dropped
0:00:19.781233851     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5181 will be dropped
0:00:19.782463350     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 4876 will be dropped
0:00:19.783814307     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5073 will be dropped
0:00:19.785996389     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5069 will be dropped
0:00:19.827689017     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5152 will be dropped
0:00:19.827868934     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5259 will be dropped
0:00:19.827957392     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5059 will be dropped
0:00:19.828058683     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5359 will be dropped
0:00:19.828161225     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5048 will be dropped
0:00:19.828277350     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5341 will be dropped
0:00:19.828376350     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5482 will be dropped
0:00:19.828468308     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5459 will be dropped
0:00:19.828696350     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 5312 will be dropped
0:00:19.828901224     6 0xf6074c08 WARN               h264parse gsth264parse.c:1490:gst_h264_parse_handle_frame:<parser> broken/invalid nal Type: 1 Slice, Size: 6413 will be dropped
0:00:19.831464764     6 0xac79dba8 FIXME              rtspmedia rtsp-media.c:4549:gst_rtsp_media_suspend: suspend for dynamic pipelines needs fixing
0:00:19.831558139     6 0xac79dba8 ERROR             rtspclient rtsp-client.c:3076:handle_setup_request: client 0xac6de710: no control in path '/kapu'
QuantumEntangledAndy commented 10 months ago

Hmm different error now. Not what I was expecting from the log either. It seems the video is working fine but then gstreamer throws an error. Perhaps the audio is not decoding right. Could you put this environmental variable RUST_LOG to "debug". That should then print what format was detected. You may also want to try disabling audio in the official client to see if that makes a difference.

MrMojoR commented 10 months ago

Thanks, it is working now in HomeAssistant, unfortunately it was draining the battery, so I have tried the MQTT integration, which also works great, but still drains the battery. Also with neolink and using the default reolink app, motion is never detected, and no clips are recorded, no notifications are sent. I think it is because the app thinks that we currently watching the stream when using neolink. I won't be using this for now, but I really like the concept, thanks for your efforts!

QuantumEntangledAndy commented 10 months ago

Yes battery is an issue. There's a couple of plans to address this such as disconnecting when no clients attached and watching push notifications to detect motion to reconnect too.

QuantumEntangledAndy commented 9 months ago

Seems your original issue was addressed so I will close this one