GithubHelp home page GithubHelp logo

liguangjie0423 / jellyscrub Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nicknsy/jellyscrub

0.0 0.0 0.0 42.66 MB

Smooth mouse-over video scrubbing previews for Jellyfin.

License: MIT License

JavaScript 23.03% C# 60.36% HTML 16.61%

jellyscrub's Introduction

Jellyscrub

About

Jellyscrub is a plugin that generates "trickplay" (Roku .bif) files that are then interpreted by the client and used for bufferless scrubbing image previews.

The trickplay data for a 1:30hr movie with 320x180 thumbnails only takes about 6MB of data when generating an image every 10 seconds. Takes around one - four minutes to generate depending on computer hardware.

Abilities

  • No buffering, even over proxies
  • Works with web, desktop, Android phone, iOS client -- see last installation instruction to get working on desktop
  • Customize interval between new images
  • Generate trickplay files at multiple target resolutions
  • Generate on library scan, as a scheduled task, or whenever they are requested by the client
  • Option to save locally to media folder

Limitations

  • No options to limit libraries/media that have trickplay files generated

Comparison

Jellyfin Default [SSL, Cloudflare Proxy] (Minimum of 5m Interval):

Jellyscrub [SSL, Cloudflare Proxy] (Default 10s Interval, 320px width):

Jellyscrub on iOS [Single Screenshot, Functions Same as Above]:

Installation

NOTE: The client script will fail to inject automatically into the jellyfin-web server if there is a difference in permission between the owner of the web files (root, or www-data, etc.) and the executor of the main jellyfin-server. This often happens because...

  • Docker - the container is being run as a non-root user while having been built as a root user, causing the web files to be owned by root. To solve this, you can remove any lines like User: 1000:1000, GUID:, PID:, etc. from the jellyfin docker compose file.
  • Install from distro repositories - the jellyfin-server will execute as jellyfin user while the web files will be owned by root, www-data, etc. This can likely be fixed by adding the jellyfin (or whichever user your main jellyfin server runs at) to the same group the jellyfin-web folders are owned by. You should only do this if they are owned by a group other than root, and will have to lookup how to manage permissions on your specific distro.
  • Alternatively, the script can manually be added to the index.html as described below.

NOTE: If you manually injected the script tag, you will have to manually inject it on every jellyfin-web update, as the index.html file will get overwritten. However, for normal Jellyscrub updates the script tag will not need to be changed as the plugin will return the latest script from /ClientScript

  1. Add https://raw.githubusercontent.com/nicknsy/jellyscrub/main/manifest.json as a Jellyfin plugin repository
  2. Install Jellyscrub from the repository
  3. Restart the Jellyfin server
  4. If your Jellyfin's web path is set, the plugin should automatically inject the companion client script into the "index.html" file of the web server directory. Otherwise, the line <script plugin="Jellyscrub" version="1.0.0.0" src="/Trickplay/ClientScript"></script> will have to be added at the end of the body tag manually right before </body>. If you have a base path set, change src="/Trickplay/ClientScript" to src="/YOUR_BASE_PATH/Trickplay/ClientScript".
  5. Clear your site cookies / local storage to get rid of the cached index file and receive a new one from the server.
  6. Change any configuration options, like whether to save in media folders over internal metadata folders.
  7. Run a scan (could take much longer depending on library size) or start watching a movie and the scrubbing preview should update in a few minutes.
  8. OPTIONAL: In the JMP desktop client (version >= 1.8.1), click on your profile image, go to "Client Settings", and tick "Jellyscrub" under plugin support. Restart for changes to take effect.

jellyscrub's People

Contributors

nicknsy avatar lukepulverenti avatar neropcstation avatar abrioy avatar threaksbjoern avatar silvenga avatar

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.