Coder Social home page Coder Social logo

danielburhans / wavepipe Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mdlayher/wavepipe

0.0 2.0 0.0 2.32 MB

Cross-platform media server, written in Go. MIT Licensed.

License: MIT License

Makefile 0.24% Go 98.83% PLpgSQL 0.85% HTML 0.08%

wavepipe's Introduction

wavepipe Build Status GoDoc

Cross-platform media server, written in Go. MIT Licensed.

Rewrite in progress: wavepipe is being rewritten from the ground up with better code practices, and more emphasis on decoupled code which is easy to test. Please excuse the mess!

API documentation may be found in doc/API.md. Full code documentation may be found on GoDoc.

wavepipe currently has no official web UI, but it can be used with a variety of Subsonic clients. Follow the guide under doc/Subsonic.md to set wavepipe up for use with Subsonic clients!

wavepipe is a spiritual successor to WaveBox, and much of its design and ideas are inspired from the WaveBox project. This being said, wavepipe is an entirely new project, with its own goals.

Installation

wavepipe can be built using Go 1.3+, but also has a dependency on TagLib for its ability to read media metadata. The TagLib static libraries can be installed on Ubuntu as follows:

$ sudo apt-get install libtagc0-dev

Once the TagLib library is installed, wavepipe can be downloaded, built, and installed, simply by running:

$ go get github.com/mdlayher/wavepipe

To aid in debugging, the current git commit revision can be injected into wavepipe via the Go linker. If wavepipe is built without the proper flags, it will log a warning stating "empty git revision", and ask to be built using make. For this reason, it is recommended to build and install wavepipe using the included Makefile:

$ make
$ make install

To enable wavepipe's transcoding functionality, you must have ffmpeg installed. In order to enable MP3 and Ogg Vorbis transcoding, ffmpeg must have the libmp3lame and libvorbis codecs, respectively. If the codec is missing, transcoding to that codec will be disabled.

On newer versions of Ubuntu, ffmpeg with libmp3lame and libvorbis can be installed as follows:

$ sudo apt-get install ffmpeg libavcodec-extra-53

Configuration

On first run, wavepipe will attempt to create its sqlite database using the option set via the -sqlite flag. The default location is ~/.config/wavepipe/wavepipe.db. Once this is done, the user must at least specify the -media command line flag, to allow wavepipe to scan and watch a media folder. Here is an example of the default command-line configuration, with the media folder specified as the user's home media folder:

$ wavepipe -host :8080 -sqlite ~/.config/wavepipe/wavepipe.db -media ~/Music/

These options will:

  • Bind wavepipe to localhost on port 8080
  • Use the specified location for its sqlite database
  • Scan and watch media in the specified folder

The host and sqlite database will use the above configuration by default, but the media folder must be specified.

$ wavepipe -media ~/Music/

Recommendations

For the best possible experience while using wavepipe, it is recommended that you follow these tips:

  • Run wavepipe using SSL. In order to effectively secure your wavepipe session, SSL is a must. The most simple way to accomplish this is to proxy requests to wavepipe via nginx, with nginx configured to use SSL.
  • Ensure your media is properly tagged. wavepipe will provide a much better experience for users who ensure that their media is consistently tagged. Proper artist and album naming are especially key, in order to enable the best possible experience.

FAQ

Q: Where's the web UI?

A: My frontend skills are very limited, but I am in the process of learning Ember.js. If you'd like to help contribute code for an official wavepipe web UI, I'd love to hear from you! Feel free to contact me at mdlayher (at) gmail (dot) com!

Q: Does wavepipe recognize the ALBUMARTIST tag?

A: Not yet, but it will in the future! I am currently developing a native Go audio tag parser, inspired by TagLib. The project is called taggolib, and I intend to use it with wavepipe to completely remove the need for Cgo and TagLib bindings. Once taggolib is able to parse a wide variety of media formats, the dev_taggolib branch will be merged into master, providing additional functionality and much more tagging flexibility.

wavepipe's People

Contributors

mdlayher avatar

Watchers

Allclone avatar James Cloos 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.