thirtythreeforty / neolink

An RTSP bridge to Reolink IP cameras
https://www.thirtythreeforty.net/posts/2020/05/hacking-reolink-cameras-for-fun-and-profit/
GNU Affero General Public License v3.0
892 stars 151 forks source link

Everything works fine with Argus Eco, but I cannot connect to stream in VLC player #326

Open tmcdiscord1991 opened 1 year ago

tmcdiscord1991 commented 1 year ago

Describe the bug When I use VLC media player to connect to rtsp I get this error from the console :

thread '<unnamed>' panicked at 'write_src must be present in created bin', src\rtsp\gst.rs:212:18
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library\std\src\panicking.rs:584
   1: core::panicking::panic_fmt
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library\core\src\panicking.rs:142
   2: core::panicking::panic_display<str>
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library\core\src\panicking.rs:72
   3: core::panicking::panic_str
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library\core\src\panicking.rs:56
   4: core::option::expect_failed
             at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library\core\src\option.rs:1874
   5: <std::io::Write::write_fmt::Adapter<T> as core::fmt::Write>::write_str
   6: g_cclosure_marshal_VOID__OBJECTv
   7: g_variant_type_get_gtype
   8: g_signal_emit_valist
   9: g_signal_emit
  10: gst_rtsp_media_factory_construct
  11: gst_rtsp_auth_set_tls_database
  12: gst_rtsp_client_set_thread_pool
  13: gst_rtsp_client_handle_message
  14: gst_rtsp_connection_write_usec
  15: g_main_depth
  16: g_main_context_is_owner
  17: g_main_loop_run
  18: gst_rtsp_stream_transport_set_url
  19: g_thread_pool_stop_unused_threads
  20: g_thread_new
  21: g_rw_lock_writer_unlock
  22: configthreadlocale
  23: BaseThreadInitThunk
  24: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

To Reproduce My configuration file is :

bind = "0.0.0.0"

[[cameras]]
name = "first_try"
username = "admin"
password = "*******"
uid = "9***************X"

The command in cmd is : neolink rtsp --config=sample_config.toml

The command I used in VLC player for streaming is : rtsp://127.0.0.1:8554/first_try

The result on console after running neolink is :

neolink rtsp --config=sample_config.toml
[2022-12-04T00:59:16Z INFO  neolink] Neolink d75e416c96b9867875bc7252777302e8cec214ab release
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Connecting to camera at UID: 9******************X
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Logging in
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Connecting to camera at UID: 9******************X
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Logging in
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Connected and logged in
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Connected and logged in
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Starting video stream Sub Stream (Fluent)
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Camera time is already set: 2022-12-04 3:59:15 +3
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Camera reports firmware version 1030_671_488_41
[2022-12-04T00:59:17Z INFO  neolink::rtsp] first_try: Starting video stream Main Stream (Clear)

Expected behavior I was expecting the VLC player to show the stream since I had no errors after running neolink on the console, and everything went okay there.

Versions Neolink software: 0.4.0 Reolink camera model is Argus echo and firmware is : 1030_671_488_41

QuantumEntangledAndy commented 1 year ago

The error usually means that you are missing the necessary gstremers plugins. What is your OS and how did you install gstreamer?

tmcdiscord1991 commented 1 year ago

The error usually means that you are missing the necessary gstremers plugins. What is your OS and how did you install gstreamer?

I'm using Windows 10 64bit home edition. I downloaded this version of gstreamer : https://gstreamer.freedesktop.org/data/pkg/windows/1.20.4/msvc/gstreamer-1.0-msvc-x86_64-1.20.4.msi

From this webpage : https://gstreamer.freedesktop.org/download/

And then from " MSVC 64-bit VS 2019 " I downloaded the 1.20.4 runtime installer

After installing it, and added the path variables, I still couldn't get neolink to find the gstreamer binaries. So I copied all the files in the bin folder of gstreamer to the neolink folder to run them directly from there.

QuantumEntangledAndy commented 1 year ago

I have a feeling that your copy everything to the neolink folder will let it load the core gstreamer libraries but not the needed plugin ones. If you are using the 1.20 msi the PATH variable should be a little different to what we suggest in the readme. What path variable did you add?

tmcdiscord1991 commented 1 year ago

I have a feeling that your copy everything to the neolink folder will let it load the core gstreamer libraries but not the needed plugin ones. If you are using the 1.20 msi the PATH variable should be a little different to what we suggest in the readme. What path variable did you add?

Just this one: D:\gstreamer\1.0\msvc_x86_64\bin

When I did this, it didn't work, so I had to copy all of inside bin folder to neolink folder

QuantumEntangledAndy commented 1 year ago

You have checked that the path exists and contains the needed files then? If so could you try running gst-inspect it should report all your loaded plugins

tmcdiscord1991 commented 1 year ago

You have checked that the path exists and contains the needed files then? If so could you try running gst-inspect it should report all your loaded plugins

I ran this command inside neolink folder where I added all bin content of gstreamer gst-inspect-1.0

D:\SLR\release-windows-2019>gst-inspect-1.0
staticelements:  bin: Generic bin
staticelements:  pipeline: Pipeline object

Total count: 1 plugin, 2 features

But when I run gst-inspect-1.0 outside of the neolink folder, I get a long list of plugins. Total count: 164 plugins, 772 features

And I also get this :

(gst-inspect-1.0:27300): GStreamer-WARNING **: 00:18:41.543: Failed to load plugin 
'D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll': The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run 'dumpbin -dependents' (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.
QuantumEntangledAndy commented 1 year ago

Yeah I think remove the gstremers that you put into the neolink folder and try and get it working with just PATH changes.

May I ask how you edited the PATH variable? Was it though terminal commands or through the computer settings gui? I think once we get gstreamer installed correctly you are good to go.

PoetikDragon commented 1 year ago

I am not sure but I might have the same problem? I installed gstreamer in default location and set PATH via advanced system settings > environment variables. I have confirmed with echo %PATH% that it is correct. When I run gst-inspect-1.0 I get the same error: Failed to load plugin 'D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll' but dozens of other plugins load successfully. When I run neolink via command line, it again mentions gstassrender is missing, but then continues on normally without error. It outputs a bunch of messages about loading the fluent and clear streams, etc.

If I try to load the stream in VLC it just says failed to load and the error log is blank.

QuantumEntangledAndy commented 1 year ago

Yeah gstreamer error are mostly hidden. Since you have errors with gst-insepect this is most likely coming from issues with the setup of gstreamer.

We need to find out what is up here before we can proceed. What is your gstreamer version and what is the value of the environmental variable GSTREAMER_1_0_ROOT_MSVC_X86_64


Neolink won't report most gstreamer related errors until you get to streaming and even then they are hidden by default unless the GST_DEBUG variable is set to 3.

This is because until streaming neolink is just talking to the camera so there's no error there and at straeming we delegate to gstreamer and gstreamer hides the error messages unless that variable is set.

QuantumEntangledAndy commented 1 year ago

We don't require the assrender plugin (it renders subtitiles) but we do use these:

app (gst-plugins-base): For the link from neolink to gstreamer audioparsers (gst-plugins-good): To parse the audio audioconvert (gst-plugins-base): To convert the audio to a RTSP ready format videoparsersbad (gst-plugins-bad): To parse h264/5 video rtp (gst-plugins-good): To get the video ready for RTSP

Can you confirm your gst-inspect sees all of these?

QuantumEntangledAndy commented 1 year ago

If you set the enironmental variable GST_DEBUG to 3 then try and connect to neolink we should get a more full report of what plugins are missing.

PoetikDragon commented 1 year ago

GStreamer version is 1.20.4, same as the above.

GSTREAMER_1_0_ROOT_MSVC_X86_64 is set to D:\gstreamer\1.0\msvc_x86_64\

(By the way, the Readme.md instructions use %GSTREAMER_1_0_ROOT_X86_64% without MSVC_ in the variable name. I noticed that while adding to the environment variables and fixed it in my PATH.)

My PATH has D:\gstreamer\1.0\msvc_x86_64\bin in it.

gst-inspect-1.0 shows 164 plugins and 789 features including: app: appsink: AppSink app: appsrc: AppSrc audioconvert: audioconvert: Audio converter audioparsers: aacparse: AAC audio stream parser audioparsers: ac3parse: AC3 audio stream parser audioparsers: amrparse: AMR audio stream parser audioparsers: dcaparse: DTS Coherent Acoustics audio stream parser audioparsers: flacparse: FLAC audio parser audioparsers: mpegaudioparse: MPEG1 Audio Parser audioparsers: sbcparse: SBC audio parser audioparsers: wavpackparse: Wavpack audio stream parser videoparsersbad: av1parse: AV1 parser videoparsersbad: diracparse: Dirac parser videoparsersbad: h263parse: H.263 parser videoparsersbad: h264parse: H.264 parser videoparsersbad: h265parse: H.265 parser videoparsersbad: jpeg2000parse: JPEG 2000 parser videoparsersbad: mpeg4videoparse: MPEG 4 video elementary stream parser videoparsersbad: mpegvideoparse: MPEG video elementary stream parser videoparsersbad: pngparse: PNG parser videoparsersbad: vc1parse: VC1 parser videoparsersbad: vp9parse: VP9 parser ... and dozens of things under "rtp"

When I set GST_DEBUG to 3 and run neolink I get a new error message that was not displayed before:

0:00:00.060204000 15684 000002167C1F7E70 WARN      GST_PLUGIN_LOADING gstplugin.c:875:_priv_gst_plugin_load_file_for_registry: module_open failed: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run 'dumpbin -dependents' (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

And it is followed by this same error message I have had all along:

(neolink:15684): GStreamer-WARNING **: 00:46:46.938: Failed to load plugin 'D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll': The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run 'dumpbin -dependents' (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.
PoetikDragon commented 1 year ago

I have looked in D:\gstreamer\1.0\msvc_x86_64\lib\ and there is no .dll there. That missing .dll is in the subfolder D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0

QuantumEntangledAndy commented 1 year ago

Looks like your missing a dependency of gstreamer. Do you have the dumpbin command? If so please try using it on the gstramer dlls to see what might be missing.

I have read somewhere that you might need to add D:\gstreamer\1.0\msvc_x86_64\lib to the PATH

Also gstreamer changed it from GSTREAMER_1_0_ROOT_X86_64 to GSTREAMER_1_0_ROOT_MSVC_X86_64 in the lasted version so that is why it is different.

QuantumEntangledAndy commented 1 year ago

If you can perhaps try

dumpbin -dependents D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll to see what might be missing

PoetikDragon commented 1 year ago

Looks like your missing a dependency of gstreamer. Do you have the dumpbin command? If so please try using it on the gstramer dlls to see what might be missing.

It isn't missing, some code somewhere is looking for it in the wrong place, in \lib instead of \lib\gstreamer-1.0

PoetikDragon commented 1 year ago

I have tried valiantly but I can't even find a place to get dumpbin (I do have Visual Studio but can't find it in the directories anywhere)

QuantumEntangledAndy commented 1 year ago

Maybe we should try switching to an older gstreamer until they sort out the packaging for it properly. Perhaps try the 1.16 or 1.18 (do check the path again because they added a msvc into the directory)

Also you can probably find dumpbin if you start the visual student command prompt. Usually to bring this up just starting typing visual studio into the start menu. Once in the visual studio command prompt you can just start the dumpbin command without knowing the full path.

PoetikDragon commented 1 year ago

Ah, no luck there. Even with the Visual Studio command prompt, dumpbin is not found.

I shall try downgrading gstreamer.

PoetikDragon commented 1 year ago

I managed to get dumpbin, yay. I had to install the "C++ profiling tools" feature in Visual Studio 2022. Here's the result:

dumpbin -dependents D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll
Microsoft (R) COFF/PE Dumper Version 14.31.31104.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll

File Type: DLL

  Image has the following dependencies:

    gstvideo-1.0-0.dll
    gstreamer-1.0-0.dll
    gobject-2.0-0.dll
    glib-2.0-0.dll
    libass-9.dll
    VCRUNTIME140.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    KERNEL32.dll

  Summary

        1000 .data
        1000 .pdata
        5000 .rdata
        1000 .reloc
        8000 .text

EDIT: It appears libass-9.dll is what is missing... EDIT x2: I found a copy of libass-9.dll but sticking it in the folder didn't fix it. So going to try downgrading now.

PoetikDragon commented 1 year ago

Okay so we're making progress but still no joy. Downgrading to 1.18.6 got rid of the missing .dll error. When I run neolink with GST_DEBUG = 3, it starts up with no error messages. But when I attempt to load the stream in VLC it errors.

VLC error log:

-- logger module started --
main: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
main: playlist is empty
live555 error: Failed to connect with rtsp://127.0.0.1:8554/puppycam_outside
satip error: Failed to setup RTSP session
-- logger module stopped --

Debug messages in neolink:

[2022-12-16T10:25:42Z INFO  neolink] Neolink 7ae61604b8df5fdb6a8983ce2dbb717be5c59707 release
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Connecting to camera at Address: 192.168.1.250:9000
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Logging in
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Connecting to camera at Address: 192.168.1.250:9000
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Logging in
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Connected and logged in
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Starting video stream Sub Stream (Fluent)
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Connected and logged in
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Camera time is already set: 2022-12-16 2:25:42 -8
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Camera reports firmware version v3.1.0.989_22071306
[2022-12-16T10:25:42Z INFO  neolink::rtsp] puppycam_outside: Starting video stream Main Stream (Clear)
0:00:17.061335000 10904 000001F3DDE87040 FIXME                default gstutils.c:4026:gst_pad_create_stream_id_internal:<audsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:17.061621000 10904 000001F3DDE870C0 FIXME                default gstutils.c:4026:gst_pad_create_stream_id_internal:<vidsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:17.100792000 10904 000001F3DDE87080 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 20068 will be dropped
0:00:17.197159000 10904 000001F3DDE87080 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 19860 will be dropped
0:00:17.199329000 10904 000001F3DDE87080 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 19675 will be dropped
0:00:17.294687000 10904 000001F3DDE87000 WARN               decodebin gstdecodebin2.c:4720:gst_decode_bin_expose:<decodebin0> error: no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)lc, profile=(string)lc, rate=(int)16000, channels=(int)1, stream-format=(string)adts)

0:00:17.296506000 10904 000001F3DDCBEBC0 WARN               rtspmedia rtsp-media.c:3250:default_handle_message: 000001F3DDE571C0: got error Your GStreamer installation is missing a plug-in. (../gst/playback/gstdecodebin2.c(4720): gst_decode_bin_expose (): /GstPipeline:media-pipeline/GstBin:bin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)lc, profile=(string)lc, rate=(int)16000, channels=(int)1, stream-format=(string)adts)
)
0:00:17.297108000 10904 000001F3DDE87040 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<audsrc> error: Internal data stream error.
0:00:17.299170000 10904 000001F3DDE87040 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<audsrc> error: streaming stopped, reason not-linked (-1)
0:00:17.297708000 10904 000001F3DDCBE900 WARN               rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:17.301531000 10904 000001F3DDCBE900 WARN               rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:17.300408000 10904 000001F3DDE87040 WARN                   queue gstqueue.c:990:gst_queue_handle_sink_event:<queue1> error: Internal data stream error.
0:00:17.300444000 10904 000001F3DDCBEBC0 WARN               rtspmedia rtsp-media.c:3250:default_handle_message: 000001F3DDE571C0: got error Internal data stream error. (../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:media-pipeline/GstBin:bin0/GstAppSrc:audsrc:
streaming stopped, reason not-linked (-1))
0:00:17.297127000 10904 000001F3DDE87080 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 20236 will be dropped
0:00:17.305014000 10904 000001F3DDE87040 WARN                   queue gstqueue.c:990:gst_queue_handle_sink_event:<queue1> error: streaming stopped, reason not-linked (-1)
0:00:17.308116000 10904 000001F3DDE87080 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 20160 will be dropped
0:00:17.309697000 10904 000001F3DDCBEBC0 WARN               rtspmedia rtsp-media.c:3250:default_handle_message: 000001F3DDE571C0: got error Internal data stream error. (../plugins/elements/gstqueue.c(990): gst_queue_handle_sink_event (): /GstPipeline:media-pipeline/GstBin:bin0/GstQueue:queue1:
streaming stopped, reason not-linked (-1))
0:00:17.312900000 10904 000001F3DDCBE900 ERROR                GST_BUS gstbus.c:1087:gst_bus_remove_watch:<bus3> no bus watch was present
0:00:17.318063000 10904 000001F3DDCBE900 ERROR             rtspclient rtsp-client.c:1087:find_media: client 000001F3DDCE3150: can't prepare media
0:00:17.322474000 10904 000001F3DDCBE900 ERROR             rtspclient rtsp-client.c:3366:handle_describe_request: client 000001F3DDCE3150: no media
0:00:17.403920000 10904 000001F3DDCB9870 WARN                  appsrc gstappsrc.c:1914:gst_app_src_push_internal:<vidsrc> do-timestamp=TRUE but buffers are provided before reaching the PLAYING state and having a clock. Timestamps will not be accurate!
0:00:17.405767000 10904 000001F3DDCB9870 WARN                  appsrc gstappsrc.c:1914:gst_app_src_push_internal:<audsrc> do-timestamp=TRUE but buffers are provided before reaching the PLAYING state and having a clock. Timestamps will not be accurate!
0:00:21.436138000 10904 000001F3DDE59240 FIXME                default gstutils.c:4026:gst_pad_create_stream_id_internal:<audsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:21.436309000 10904 000001F3DDE591C0 FIXME                default gstutils.c:4026:gst_pad_create_stream_id_internal:<vidsrc:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:21.500415000 10904 000001F3DDE59200 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse1> broken/invalid nal Type: 1 Slice, Size: 20218 will be dropped
0:00:21.594626000 10904 000001F3DDE59200 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse1> broken/invalid nal Type: 1 Slice, Size: 20914 will be dropped
0:00:21.596823000 10904 000001F3DDE59200 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse1> broken/invalid nal Type: 1 Slice, Size: 20288 will be dropped
0:00:21.695568000 10904 000001F3DDE59200 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse1> broken/invalid nal Type: 1 Slice, Size: 20748 will be dropped
0:00:21.695911000 10904 000001F3DDE59280 WARN               decodebin gstdecodebin2.c:4720:gst_decode_bin_expose:<decodebin1> error: no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)lc, profile=(string)lc, rate=(int)16000, channels=(int)1, stream-format=(string)adts)

0:00:21.697405000 10904 000001F3DDE59200 WARN               h264parse gsth264parse.c:1492:gst_h264_parse_handle_frame:<h264parse1> broken/invalid nal Type: 1 Slice, Size: 20732 will be dropped
0:00:21.699217000 10904 000001F3DDE872C0 WARN               rtspmedia rtsp-media.c:3250:default_handle_message: 000001F3DDE571F0: got error Your GStreamer installation is missing a plug-in. (../gst/playback/gstdecodebin2.c(4720): gst_decode_bin_expose (): /GstPipeline:media-pipeline/GstBin:bin1/GstDecodeBin:decodebin1:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)lc, profile=(string)lc, rate=(int)16000, channels=(int)1, stream-format=(string)adts)
)
0:00:21.699233000 10904 000001F3DDE59240 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<audsrc> error: Internal data stream error.
0:00:21.702891000 10904 000001F3DDE87080 WARN               rtspmedia rtsp-media.c:3576:wait_preroll: failed to preroll pipeline
0:00:21.705191000 10904 000001F3DDE87080 WARN               rtspmedia rtsp-media.c:3946:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:21.704016000 10904 000001F3DDE59240 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<audsrc> error: streaming stopped, reason not-linked (-1)
0:00:21.707886000 10904 000001F3DDE872C0 WARN               rtspmedia rtsp-media.c:3250:default_handle_message: 000001F3DDE571F0: got error Internal data stream error. (../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:media-pipeline/GstBin:bin1/GstAppSrc:audsrc:
streaming stopped, reason not-linked (-1))
0:00:21.709719000 10904 000001F3DDE87080 ERROR                GST_BUS gstbus.c:1087:gst_bus_remove_watch:<bus8> no bus watch was present
0:00:21.710511000 10904 000001F3DDE87080 ERROR             rtspclient rtsp-client.c:1087:find_media: client 000001F3DDCE3290: can't prepare media
0:00:21.712320000 10904 000001F3DDE87080 ERROR             rtspclient rtsp-client.c:3084:handle_setup_request: client 000001F3DDCE3290: media '/puppycam_outside' not found
0:00:21.803757000 10904 000001F3DDCB9870 WARN                  appsrc gstappsrc.c:1914:gst_app_src_push_internal:<vidsrc> do-timestamp=TRUE but buffers are provided before reaching the PLAYING state and having a clock. Timestamps will not be accurate!
0:00:21.805365000 10904 000001F3DDCB9870 WARN                  appsrc gstappsrc.c:1914:gst_app_src_push_internal:<audsrc> do-timestamp=TRUE but buffers are provided before reaching the PLAYING state and having a clock. Timestamps will not be accurate!
QuantumEntangledAndy commented 1 year ago

From this your video is decoding ok as h264. But your missing the aac decoder plugin. If your ok with no sound you can disable that on the camera using an official app and it should work. Or see which aac plugin you need to get. Check what you have with gst-inspect and look for anything aac related.

PoetikDragon commented 1 year ago

SUCCESS! Posting here in case others have the same issues. Changing my gstreamer install from "typical" to "complete" fixed all of the errors. There are no errors whatsoever when loading neolink or accessing the stream from VLC.

Additionally I tried upgrading back to gstreamer 1.20.4. It also works properly as far as I can tell, but there ARE errors with GST_DEBUG = 3. So I am going to stick to the error-free 1.18.6 I think.

TLDR version: Install older version gstreamer 1.18.6 "complete" (not "typical") to get neolink working perfectly.

QuantumEntangledAndy commented 1 year ago

That's good news. if I recall we needed complete for a similar issue before maybe #119. Seems like it is something we should add in the instructions.

R-and-all commented 1 year ago

just to update again using 1.18.6 is ok, and 1.22.0 did not work. got the old version from https://gstreamer.freedesktop.org/data/pkg/windows/1.18.6/msvc/ went for gstreamer-1.0-msvc-x86_64-1.18.6.msi using on windows 11