This looks awesome. This may seem shallow, though, but when I got to the setup page, I was a little disappointed with the complexity of the setup required.
- Why are you using MySQL instead of SQLite or something even simpler? Surely my personal music streamer doesn't need serious scalability.
- Why does the setup require futzing with my Apache configs to use mod_rewrite? For just streaming music, I'm willing to put up with ugly ("something.php/directory") URLs. This would also make it easier to get up and running with non-Apache web servers (lighttpd, for instance).
- Do I really need to use a non-default PHP configuration? And increasing the interpreter's memory limit seems a little ominous.
This is all to say that perhaps the right way to deploy something like this would be as a single program you can run that has its own built-in Web server. As it is, the configuration is daunting for a home computer (although completely reasonable for a real server setting).
1. You can use SQLite or postgres if you'd like :) they all work in my tests. Just replace the database connection string with the sqllite or postgres one. My docs are just for a common lamp configuration. MySQL is a bit more performant thanks to the query caching part.
2. the mod rewrite is part of the framework I'm using (Symfony 1.4). just makes things a little easier to secure and the code a bit more maintainable. Luckily you only have to do it once. There is a VM version that uses vmware and it works fairly well if you don't feel like doing a bunch of setup - just iTunes won't play nice with the VM edition because of static paths :/
3. the problem I found is that if you have a large library, the itunes xml can take a lot of ram to parse. If you're not using itunes, the RAM demands might be a bit lower.
I do hear you on the setup complexity. I think when I get closer to a perfectly stable program with developers familiar with buidling system specific installers, I'd like to build a slick installer that installs and spins up a server for you. For now there's the VMware image.
Try Subsonic. Standalone installer, excellent web client (thought it uses a Flash player) and mobile clients for just about every platform. Video support was just added and an HTML5 player is in the works. Highly recommended. http://www.subsonic.org
This is pretty awesome, but doesn't PHP have some framework or library for running webapps with their own web servers? I really dislike trying to get PHP working and then have to get nginx or Apache working.
At the risk of sounding too stuck up, Ruby and Python have many frameworks for running themselves as web servers.
I hear you.. I'm using a PHP framework to be sure, but it doesn't come with a web server yet. I have a kind of love hate thing with PHP myself - distributing it isn't all that easy. That said, I made a debian linux image all set up if you'd like to just try it for a while before taking the plunge into a custom install. http://code.google.com/p/streeme/wiki/InstallingStreemeHomeS...
I've coded PHP for quite a while now and whilst it is slowly improving, I honestly don't see any compelling reason to use it over Python or anything else other than being on a stupid webserver. Personally I'd have done this project using Python and a WSGI server.
I created the exact same thing using Kohana but has a community aspect. My friends love it, I think this would be great if it offered community features.
Thanks! I didn't find out about Subsonic until just recently, but it looks like it needs native apps on mobile. I was trying to go as close to a pure web browser based application as I could. Scratching an itch, I guess :)
Runs about 30MB idle streaming a song with PHP and 97MB peak scanning 8500 songs using iTunes.xml. FFMpeg uses a bit of ram, but I think song scanning is the most intensive because of the stupid plist parsing task not streaming its results to PHP nicely. It's on the todo list for cleaning up.
That's just the boilerplate config for cloudfusion (a PHP based Amazon API library that streeme uses). Just fill in the bare minimum to get streeme to fetch art. - In my experience, it's AWS_KEY, AWS_SECRET_KEY, AWS_ASSOC_ID & AWS_DEFAULT_LOCALE
I'd like to store my music in S3 and have this running on my personal webserver to point to my files in S3. Is something like this possible? I suppose I could mount my S3 storage on my webserver.
- Why are you using MySQL instead of SQLite or something even simpler? Surely my personal music streamer doesn't need serious scalability.
- Why does the setup require futzing with my Apache configs to use mod_rewrite? For just streaming music, I'm willing to put up with ugly ("something.php/directory") URLs. This would also make it easier to get up and running with non-Apache web servers (lighttpd, for instance).
- Do I really need to use a non-default PHP configuration? And increasing the interpreter's memory limit seems a little ominous.
This is all to say that perhaps the right way to deploy something like this would be as a single program you can run that has its own built-in Web server. As it is, the configuration is daunting for a home computer (although completely reasonable for a real server setting).