Git Product home page Git Product logo

streamroller's Introduction

StreamRoller

Never be caught rolling without your tunes again!

StreamRoller is a web-server for desktops that serves your music collection to any web browser that supports mp3 HTML5 audio (Chrome, IE9, and Safari, at the time of writing). Transcoding from FLAC to vorbis & mp3 is supported. Additional transcoding options may be added in the future.

A client is in development for android, and is planned for iOS and Windows phone. The server should run on any platform that supports Java, although only Linux and Windows have been tested.

The StreamRoller server is powered by Sinatra on top of JRuby.

Running

StreamRoller is not yet as user-friendly as it is intended to be, however setting it up should be fairly straight forward.

  1. Rename config.yml.example to config.yml
  2. Open config.yml in a text-editor (Notepad, nano)
  3. Change location: to point to your music collection.
  4. Optionally, uncomment the password: field and change the value to set a password.
  5. Run streamroller.jar

StreamRoller will require a port to be opened on your firewall. By default, StreamRoller will attempt to use HTTP traffic over TCP port 4567 for all communications.

Tools

In order to transcode, StreamRoller requires external programs. These can be provided by the system, or placed inside the tools/ directory of the distribution.

  • FLAC to mp3 support requires flac and lame
  • FLAC to Vorbis support requires oggenc or oggenc2

Building

  1. Install a JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Download and install JRuby.
  3. Install bundler: jgem install bundler
  4. Start the build process: jruby -S rake build

Known Issues

  • Server: Does not currently handle Unicode file names. This seems to be an issue with JRuby's Ruby 1.8 implementation. (ex. M.C.D.EAD - ? ??????? will not show up)
  • Client: Playlists are buggy. This will be resolved when the web UI is overhauled.

Limitations

  • Server: The library must manually be reset by either setting skip_discovery: false or deleting library.sqlite in order to detect new music.

streamroller's People

Contributors

fitzsimmons avatar sponge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

l3ib

streamroller's Issues

Album cover images are served at full-resolution and their native filetype (which may be bmp)

Bandwidth load can be reduced significantly when loading album covers if the server resizes and possibly converts the image to a web-friendly format before transmitting to the frontend.

get /pic/:id should be updated to support resizing the images to 64x64 by default, and allow for an extra parameter to optionally specify the dimension.

Any image formats that are not png, jpeg, or gif should be converted to pngs before transmission.

Should have a settings UI

I think the only thing that can go in the settings currently is which datasource to use, but I'm sure more configuration will be welcome in the future, so we should probably build the framework for it.

Mesh Libraries

Add multiple StreamRoller libraries. Server should support this already by optionally returning JSONP. Most of the references to the absolute URL have been removed on the client, it just needs to modify the object when sending it into the playlist and add the absolute URL. Client should be able to switch interfaces with a dropdown. Can't really merge the two libraries into one because of the nature of AJAX, but switching libraries would be great.

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.