Skip to content

Multi channel synchronized player created with Phoenix/Elixir

Notifications You must be signed in to change notification settings

wwww-wwww/grasstube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grasstube

Multi channel synchronized player written in Elixir / Phoenix

Includes soft subtitle rendering using SubtitlesOctopus

Features

  • Custom player
    • Soft subtitles
    • YouTube support
    • Google Drive support (using a userscript)
    • Thumbnails
    • Playlist repeat modes
    • Automatic pausing
  • Authentication
    • User created rooms
      • Private rooms
      • Public controls
      • Adding users' emote lists
      • Granting operator controls to users
      • Editing rooms
      • Room userscripts
    • User provided list of emotes
  • Integrated youtube search

External Dependencies

  • ffmpeg
  • youtube-dl (or yt-dlp)

Thumbnails

Thumbnails are optional.

.thumb struct:

40 bytes header:
  4 bytes unsigned int - Number of frames
  4 bytes float - Time of last frame
  32 bytes ascii - MIME type

n bytes body:
  4 + m bytes image:
    4 bytes unsigned int - m (file size)
    m bytes binary image data

More info and example on generating the files can be found in the thumb directory.

To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Start Phoenix endpoint with mix phx.server
    • Or enter the interactive shell with iex -S mix phx.server

Now you can visit localhost:4000 from your browser

Ready to run in production? Please check our deployment guides.