Git Product home page Git Product logo

jellyvr's Introduction

โ„๏ธ๐ŸŽฅ jellyvr ๐Ÿ•ถ๏ธ๐Ÿฆ€

Jellyfin proxy for VR Media Players (just HereSphere for now)

Features

  • HereSphere JSON API v1 support
  • JellyFin QuickConnect as auth
  • JellyFin playback tracking
  • Configuration through
    • Environment
      • JELLYFIN_HOST (Required) Jellyfin server host
      • JELLYFIN_REMOTE_HOST Override urls pointing to Jellyfin instance (media & images), defaults to JELLYFIN_HOST.
      • RUST_LOG Logging configuration, see tracing_subscriber::filter::EnvFilter for details.
    • YAML
    • Code (Sorry)

Usage

Install & Config

Find built container in Packages. Configure by setting JELLYFIN_HOST env and mounting /data to some persistent location. Intended usage is through either k8s deployment or docker-compose. See example helmrelease.yaml for k8s-flux based reference.

Login

In HereSphere, navigate to root page (ex. https://jellyvr.tld/), you should see a code, on another device go to your jellyfin server and in QuickConnect page enter the code from jellyvr. After a few seconds jellyvr will reload itself and show a dashboard (TODO, it's just the credentials for now), in there you can find a username and password. The username is your jellyfin username. The password is a short random one, used for logging into HereSphere, try to remember it or write it down. Now you can either click the HereSphere link on the page or navigate to it manually by just appending /heresphere to the root page from earlier (ex. https://jellyvr.tld/heresphere) You will be prompted to login, enter your new credentials now. This session should persist for however long jellyfin decides to keep it, there's no built in expiration logic.

Browsing

After login you should see your entire jellyfin library dumped in front of you. On the right side you can find tags, at the top right corner you will see a tag category selection box. For series one of the key tag categories is Series (and/or Studio which is just an alias which HereSphere has special treatment for) If you think there are tag categories missing feel free to open a PR or an Issue about it.

Limitations

HereSphere has it's own codec limitations, notably it can't play Dolby audio, if you have media with ac3, eac3 or dts codecs you will have to either transcode them yourself or find alternatives.

Development

This project uses Nix for development, direnv support is included for convenience.

  • nix develop: opens up a bash shell with useful toolset
  • nix build : builds the Rust project. Outputs the binary to ./result/bin/<name>
  • nix run: runs the Rust program.
  • nix run .#watch: launches a watch-rebuild server behind systemfd on http://0.0.0.0:3000.

Reference

  1. wiki/Flakes
  2. Jellyfin openapi docs

jellyvr's People

Contributors

alyti avatar dependabot[bot] avatar

Stargazers

 avatar Nengzhuo Cai avatar

Watchers

Airradda avatar  avatar

jellyvr's Issues

Playback problems

I'm trying to play Jellyfin videos via HereSphere and found your proxy, great project :)

Connecting from HereSphere worked fine and I can see videos listed in the web api view.
But regardless of the video container and codec, as soon as I try to start playing anything it fails with the normal popup you get when missing codecs:

Failed to open file: "<name>"

Please install the Media Foundation codecs listed on this page:
[...]

Even though the needed codecs are definitely installed (playing the same files locally in HereSphere works).
FYI, I tried x264, x265 in MKV and MP4 (all had AAC audio).

I looked at the JSON response sent by jellyvr compared to the HereSphere API doc and it seemed ok, so I'm not sure what the problem might be...

(Let me know if you would like me to post a sample JSON output)

Interestingly, it does seem to work, when switching to DirectShow as backend instead of Media Foundation. Have you observed something like this before?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.