Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.
This repository was archived by the owner on Sep 15, 2025. It is now read-only.

Cannot load video elements as embedded resources or from local file system on Linux #22

@johnvcoleman-w24

Description

@johnvcoleman-w24

Before I start complaining, thank you for writing SpiderEye, you've saved me a bunch of work so far!

Describe the bug
Unable to load video elements that are embedded resources on Linux.

To Reproduce
Steps to reproduce the behavior:

  1. Add index.html (that contains a video element with a local src to a mp4 file) to SpiderEye.Core.App
<video class="video" autoplay muted loop style="z-index: 1;">
   <source src="background.mp4" type="video/mp4">
</video>
  1. Add the background.mp4 referenced in index.html to SpiderEye.Core.App
  2. Run the app and observe the video does not play

Expected behavior
Local references to multimedia content should play normally just like content from remote uris do.

Environment:

  • OS: Linux
  • SpiderEye Version: 1.0

Debugging output from gstreamer:

0:00:00.339282760 5020 0x565438c3db60 INFO webkitglvideosink GLVideoSinkGStreamer.cpp:118:webKitGLVideoSinkConstructed: Forcing RGBA as GStreamer is not new enough.
0:00:00.367481294 5020 0x565438c3db60 INFO webkitmediaplayer MediaPlayerPrivateGStreamer.cpp:1240:setPlaybinURL: Load spidereye://resources.6uyf1fll.internal/background.mp4
0:00:00.367565817 5020 0x565438c3db60 DEBUG webkitmediaplayer MediaPlayerPrivateGStreamer.cpp:617:loadFull: preload: Auto
0:00:00.367587427 5020 0x565438c3db60 DEBUG webkitmediaplayer MediaPlayerPrivateGStreamer.cpp:1531:commitLoad: Committing load.
0:00:00.367609401 5020 0x565438c3db60 DEBUG webkitmediaplayer MediaPlayerPrivateGStreamer.cpp:1212:changePipelineState: Changing state change to PAUSED from NULL with VOID_PENDING pending
0:00:00.391341891 5020 0x565438c3db60 DEBUG webkitglvideosink GLVideoSinkGStreamer.cpp:273:webKitGLVideoSinkChangeState: NULL->READY
0:00:00.391410452 5020 0x565438c3db60 DEBUG webkitglvideosink GLVideoSinkGStreamer.cpp:158:ensureGstGLContext: Creating X11 shared GL display
0:00:00.403268273 5020 0x565438c3db60 WARN uridecodebin gsturidecodebin.c:1409:gen_source_element: error: No URI handler implemented for "spidereye".

It would appear that the spidereye:// "protocol" is unknown to gstreamer, no surprise there. So I implemented my own LocalFileContentProvider to pull the content directly from the local filesystem, and it seems to work fine. The files are found (confirmed in the debugger) but at some point after that the spidereye:// prefix is being added to the uri. I can't seem to override the Uri.Scheme to tell it it's not an embedded resource either. Perhaps I'm looking at the problem wrong.

I can send you a pull request of what I have so far for the LocalFileContentProvider, but there's nothing insightful in it. :)

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions