nicmr / fidelitas

Rust network audio player and web client using actix and crossbeam multithreading, websockets, libvlc, and an Elm frontend.
GNU General Public License v3.0
0 stars 0 forks source link

Failed to initialize vlc instance on windows #41

Closed nicmr closed 4 years ago

nicmr commented 4 years ago
.\fidelitas.exe -d '.\music' --interface '{61925E1D-CD62-43EC-8408-267C1CB7E704}'
Hosting files in folder: .\music
Populated html template
Enabled file extensions: m4a, opus, wav, mp3, ogg,
Listening on port: 8088...
thread '<unnamed>' panicked at 'Failed to initialize vlc instance. This is a bug.', src\libcore\option.rs:1185:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
nicmr commented 4 years ago

Stacktrace doesn't help much, it just describes a panic taking place.

nicmr commented 4 years ago

Debugging the windows binary with gdb, relevant output here:

Enabled file extensions: wav, ogg, opus, mp3, m4a,
[New Thread 13828.0x1448]
Listening on port: 8088...
[Switching to Thread 13828.0x1448]

Thread 5 hit Breakpoint 1, 0x00007ff85c0116f4 in libvlc_new () from C:\Users\Nico\Desktop\fidelitas_x64_win\release\libvlc.dll
(gdb) n
Single stepping until exit from function libvlc_new,
which has no line number information.
warning: main libvlc debug: VLC media player - 3.0.8 Vetinari
warning: main libvlc debug: Copyright c 1996-2019 the VideoLAN team
warning: main libvlc debug: revision 3.0.8-0-gf350b6b5a7
warning: main libvlc debug: configured with ../extras/package/win32/../../../configure  '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=x86_64-w64-mingw32' '--with-breakpad=https://win.crashes.videolan.org' 'host_alias=x86_64-w64-mingw32' 'PKG_CONFIG_LIBDIR=/home/jenkins/workspace/vlc-release/windows/vlc-release-win32-x64/contrib/x86_64-w64-mingw32/lib/pkgconfig'
[New Thread 13828.0x3624]
[New Thread 13828.0x4e4]
[New Thread 13828.0x220]
[New Thread 13828.0x3b88]
[New Thread 13828.0x1070]
[New Thread 13828.0xf54]
[New Thread 13828.0x33a4]
[New Thread 13828.0x23c4]
warning: main libvlc debug: using multimedia timers as clock source
warning: main libvlc debug:  min period: 1 ms, max period: 1000000 ms
[New Thread 13828.0x215c]
warning: main libvlc debug: searching plug-in modules
warning: main libvlc debug: loading plugins cache file C:\Users\Nico\Desktop\fidelitas_x64_win\release\plugins\plugins.dat
warning: main libvlc warning: cannot read C:\Users\Nico\Desktop\fidelitas_x64_win\release\plugins\plugins.dat: No such file or directory
warning: main libvlc debug: recursively browsing `C:\Users\Nico\Desktop\fidelitas_x64_win\release\plugins'
warning: main libvlc debug: plug-ins loaded: 1 modules
[New Thread 13828.0x376c]
[New Thread 13828.0x36e4]
[New Thread 13828.0x2710]
[New Thread 13828.0x2a74]
warning: main logger debug: looking for logger module matching "any": 0 candidates
warning: main logger debug: no logger modules
[New Thread 13828.0x3648]
warning: main libvlc debug: translation test: code is "C"
warning: main libvlc error: No plugins found! Check your VLC installation.
warning: main libvlc debug: removing all interfaces
vlc::core::Instance::new () at /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/vlc-rs-0.3.0/src/core.rs:37
37      /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/vlc-rs-0.3.0/src/core.rs: No such file or directory.
nicmr commented 4 years ago

So there is definitely the issue that we're not distributing any of the vlc plugins with the binary. The following candidates are available:

I haven't been able to find any documentation which of the plugins are required for providing just audio functionality. Some can be judged by the name but generic identifiers like meta-engine and misc are definitely harder to judge.

As a starting point, we can provide the logger plugin so vlc might be able to properly tell us what's wrong. Maybe it'll even end up tell us which plugins are required. If that won't help, we'll just need to add the plugins one by one until it works 😅

nicmr commented 4 years ago

https://stackoverflow.com/questions/36220552/vlc-video-architecture this seems useful, and lists some plugins that should definitely be included. Unfortunately the quoted paper is not available anymore.

It also references information from 2001, so should be taken with a grain of salt.

nicmr commented 4 years ago

fidelitas

It's finally working. I'm so happy to live to see the day.

nicmr commented 4 years ago

Opening a separate issue for plugin selection, closing this since the crash is fixed.