Open tmcdiscord1991 opened 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?
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.
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?
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
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
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.
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.
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.
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.
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?
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.
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.
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
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.
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
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
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)
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.
Ah, no luck there. Even with the Visual Studio command prompt, dumpbin is not found.
I shall try downgrading gstreamer.
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.
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!
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.
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.
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.
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
Describe the bug When I use VLC media player to connect to rtsp I get this error from the console :
To Reproduce My configuration file is :
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 :
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