Giter Site home page Giter Site logo

audiostream's People

Contributors

nickdesaulniers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

audiostream's Issues

Should this be 2 logical applications?

Should we write this as two logical applications? The first being the audiostream application itself, providing an API to control it. Then the web interface as a second app that just uses the API?

This opens up the app to have other UI contributions, and separates out logic for us.

You can just make the main app be a dependency of the webapp so they can still deploy together. Just a thought.

Support multiple encodings

For this, I would like the path to be changed from:
/transcode/filename.extension to /transcode/requested_container/filename.extanesion.
Based on browser support, it looks like AAC is the next choice (or mp3, which would be the case of no transcoding, could make that a separate issue). So feature detection is needed client side to modify the requested path. This site has what we need: http://diveintohtml5.com/everything.html
Also, the transcode action on the server needs to update the command to run, swapping out the libvorbis argument. You can test that by getting a list of supported codecs:
ffmpeg -codecs
and finding the encoder name (on the right) for the container (also on the right), for audio encoding (symbols E and A on the left).

Seek

Hello,
is it possible to seek in audio files , or return the audio from a specific point of time in the file ?

Duration

Add the duration to the info sent to the client. This can not be read from the metadata tags, so I'm not sure how to implement this. Can be done client side, but that requires loading each audio file.

Limit concurrent calls to ffmpeg

Right now there is no limit to how many concurrent calls are made to ffmpeg.ffprobe. If you are reading the tags of a large library for the first time, the node process will crash due to requesting too many file handles.

I brought this up to the node-fluent-ffmpeg people and they said to "not my problem", so I plan on submitting a pull request which wraps the calls in async.queue to fix this issue.

Cache invalidation strategy is weak

Hashing the ajax response doesn't guarantee the resulting JSON from the server is in the same order. Sorting the results would also suck. Maybe keep track of the watched folders' mtime.

Don't transcode if client supports current extension.

So we currently transcode if the file format is for example mp3 but they don't support mp3.
If they support the file format, serve the original non transcoded version. Dropping a symlink in the library/ can help.

Update code to support express 4.

Currently a fresh install of audiostream breaks because it grabs the most recent express, which has been drastically reconfigured. Updating to run with express 4 is pretty easy and should only involve some changes in app.js. I'm happy to do the work and submit a pull request.

Android Support

Now that I have an android device, I see that something is not working in Firefox for android. Investigation needed.

transcode from flac

This is super easy, just add flac in the list of supported extensions regex in lib/filemap.js
I verified this works, but on a different machine that I don't want to have commit rights, so someday I'll get around to it, unless someone beats me to it!

Specifying Node versions in Package.json

Is it possible to specify the node and npm versions in the package.json?
Perhaps as

"engines": {
"node": "0.8.12",
"npm": "1.1.49"
}

For people who run different versions of node and because express doesn't work with node versions that are under 0.5.0.

Use localstorage to speed up listing

Store listing in localstorage as well as oldest ctime of the folders. On page load, draw tables from localstorage data, and update in background or just call /list.

Use template-literal instead of EJS

Template Literal is fastest, smallest and simplest template engine, because it use JS's literal template feature.

It's 55 times faster than EJS, and it also use less CPU and RAM ressources, so it may be a good idea to use it instead of EJS ๐Ÿ˜€

Shuffle

Add shuffle to randomly choose a song. Should be an external request, that way when pagination is implemented, it works.

Add new directories to the config.json file

It would be nice to be able to add new directories to the list of paths to search for media from the web.

In fact it would be nice to have some kind of interface to the config options in general.

iPhone support

not sure what the iphone is doing but I don't think the canplay event is firing and progress tags are unsupported.

Support different files with the same name

Currently, there is no file structure preservation or unique id's for songs, so if two songs with the same filename are requested, the second cannot be placed in library/
A file manager class, or separate process might be nice.

Safari support

looks like safari has trouble with HTTP basic authentication?

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.