QuantumEntangledAndy / neolink

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

GStreamer-CRITICAL **: 20:58:29.351: gst_mini_object_unref: assertion 'mini_object != NULL' failed #111

Closed MicheleCardamone closed 1 year ago

MicheleCardamone commented 1 year ago

BUG: Hi all, neolink has this error after opening stream in blueiris: GStreamer-CRITICAL **: 20:58:29.351: gst_mini_object_unref: assertion 'mini_object != NULL' failed Everything works fine but I don't understand what it refers to. Thank you!

QuantumEntangledAndy commented 1 year ago

I don't think this is a bug. As long as everything works I think this is because of how the gstramer pipeline is tested.

In gatreamer there is no good way to test if a client is connected to a media expect by sending data to the media and seeing if it fails. If client is gone then the media send fails and this log message occurs. When this happens we clean up the media and remove it. No error has actually occurred and this is normal operation.

MicheleCardamone commented 1 year ago

I don't think this is a bug. As long as everything works I think this is because of how the gstramer pipeline is tested.

In gatreamer there is no good way to test if a client is connected to a media expect by sending data to the media and seeing if it fails. If client is gone then the media send fails and this log message occurs. When this happens we clean up the media and remove it. No error has actually occurred and this is normal operation.

When neolink is running everything works fine, but I have noticed that if I close and re-open neolink blueiris fails to open streams, and I have to stop and start neolink several times to get it working properly.

0ry0n commented 1 year ago

I have the same problem, motion fails to open streams (503 - time out). I did some tests and I saw that the problem arises from version 0.5.9. 0.5.8 works fine.

[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Preprocessed
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Buffer filled
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.518s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 931.604408s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] - Sent seek H264: true
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Got Seek Request: 0ns
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.518s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 931.764375s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Linking encoder to decoder: Some(Caps(audio/x-raw(memory:SystemMemory) { format: (gchararray) "S16LE", layout: (gchararray) "interleaved", rate: (gint) 16000, channels: (gint) 2, channel-mask: (GstBitmask) 0x0000000000000003 }))
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Preprocessed
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Buffer filled
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.598s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 950.360408s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] - Sent seek H264: true
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Got Seek Request: 0ns
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.553535s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 950.404836s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Linking encoder to decoder: Some(Caps(audio/x-raw(memory:SystemMemory) { format: (gchararray) "S16LE", layout: (gchararray) "interleaved", rate: (gint) 16000, channels: (gint) 2, channel-mask: (GstBitmask) 0x0000000000000003 }))
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Could not update client: Vid src is closed

(neolink:3423): GStreamer-WARNING **: 16:35:00.676: free_priv_data: object finalizing but still has 1 parents (object:0x7f835412d360)
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Failed to send buffer list: Could not push buffer to appsrc
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Could not update client: Could not push buffer to appsrc

(neolink:3423): GStreamer-CRITICAL **: 16:35:00.677: gst_mini_object_unref: assertion 'mini_object != NULL' failed
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0
0ry0n commented 1 year ago

It seems that "Vid src" is closed. Could it be an asynchronicity issue, since it seems to have been introduced since 0.5.9?

MicheleCardamone commented 1 year ago

It seems that "Vid src" is closed. Could it be an asynchronicity issue, since it seems to have been introduced since 0.5.9?

MicheleCardamone commented 1 year ago

I have the same problem, motion fails to open streams (503 - time out). I did some tests and I saw that the problem arises from version 0.5.9. 0.5.8 works fine.

[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Preprocessed
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Buffer filled
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.518s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 931.604408s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] - Sent seek H264: true
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Got Seek Request: 0ns
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.518s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 931.764375s
[2023-07-08T14:34:38Z DEBUG neolink::rtsp::gst::factory] Linking encoder to decoder: Some(Caps(audio/x-raw(memory:SystemMemory) { format: (gchararray) "S16LE", layout: (gchararray) "interleaved", rate: (gint) 16000, channels: (gint) 2, channel-mask: (GstBitmask) 0x0000000000000003 }))
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Preprocessed
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Buffer filled
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.598s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 950.360408s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] - Sent seek H264: true
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Got Seek Request: 0ns
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Minimum Latency: 3.553535s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::sender] Jumped to live: New start time: 950.404836s
[2023-07-08T14:34:40Z DEBUG neolink::rtsp::gst::factory] Linking encoder to decoder: Some(Caps(audio/x-raw(memory:SystemMemory) { format: (gchararray) "S16LE", layout: (gchararray) "interleaved", rate: (gint) 16000, channels: (gint) 2, channel-mask: (GstBitmask) 0x0000000000000003 }))
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Could not update client: Vid src is closed

(neolink:3423): GStreamer-WARNING **: 16:35:00.676: free_priv_data: object finalizing but still has 1 parents (object:0x7f835412d360)
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Failed to send buffer list: Could not push buffer to appsrc
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::sender] Could not update client: Could not push buffer to appsrc

(neolink:3423): GStreamer-CRITICAL **: 16:35:00.677: gst_mini_object_unref: assertion 'mini_object != NULL' failed
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Building H264 Pipeline
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Building Aac pipeline
[2023-07-08T14:35:00Z DEBUG neolink::rtsp::gst::factory] Send seek H264: 0

I got the same result with 0.5.8, but with this older version after a few hours of correct functioning on the mainstream I get an interference (intermittent gray screen). With version 0.5.11 the gstreamer error mentioned above appears but this does not prevent correct functioning, on the contrary by starting neolink the streams of all 9 cams do not seem available, if instead I disable 4 of them from blueiris and reactivate them later 30 seconds the problem is solved. With the latest version 0.5.13 this problem doesn't arise, but the streams are very unstable and constantly lose connection. For now the perfect balance for me looks like 0.5.11. I am attaching my .toml file neolink conf.txt

QuantumEntangledAndy commented 1 year ago

I cannot get this to replicate on my macos. But I can get it to replicate on linux using docker. Are you all using docker by any chance?

0ry0n commented 1 year ago

No, i use debian (5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux) without docker.

QuantumEntangledAndy commented 1 year ago

The docker image is based on debian so perhaps theres something there. I'll try a few things but there is not much to go on here

QuantumEntangledAndy commented 1 year ago

Seems to be getting issues in the audio decoder not liking the data from the camera (the format is a bit flakey from the camera).

Also I was checking differences between my macos and the docker and noticed that the docker was using avdec (ffmpeg) to decode the AAC audio while my mac was not (I use auto decoder tools which is meant to select the best decoder for the job).

To test if it was the avdev I uninstalled it from a test docker image

apt remove gstreamer1.0-libav

Then tried again. I no longer have any issues

@0ry0n since you are running on metal this should be easier that the docker could you uninstall gstreamer1.0-libav and try again

0ry0n commented 1 year ago

I checked and i don't actually have that library installed... i tried to install it too but nothing changes

0ry0n commented 1 year ago

If you say that the problem is related to the audio, i will try to test it

QuantumEntangledAndy commented 1 year ago

I'll keep looking then. It's one of these errors that is intermittent making it hard to reliably isolate

0ry0n commented 1 year ago

Yes I know, thanks for the effort... I too will try to try to understand the problem

MicheleCardamone commented 1 year ago

I cannot get this to replicate on my macos. But I can get it to replicate on linux using docker. Are you all using docker by any chance?

No, i'm using windows 10.

QuantumEntangledAndy commented 1 year ago

@0ry0n Could you test out this build it seems to be working for me on my mac, debian and in the docker image. But since it is intermittent I might just be getting (un)lucky

0ry0n commented 1 year ago

Yes, it seems resolved. 💪

QuantumEntangledAndy commented 1 year ago

Changes are merged in master, should be going out in 0.5.14 build

QuantumEntangledAndy commented 1 year ago

Closed with 0.5.14 release, if you still have issues please let me know