I recently heard about a sounds.json file and started messing around with it. I found that there is a stream option. Does this mean I can have a ogg file on the server and stream it to the client without the client needing the ogg file? If so how can I do this so I can have music play to all the players on the server?
In order for the player to be able to hear your music, he first has to have a recourcepack which contains said music. What the stream option is for is to set whether or not the sound should be preloaded.
If you set it to 0 then minecraft will first load the sound the first time you play it and then play it, this is useful as it only has to load the sound once and can access it quicker on subsequent plays (at the cost of a tiny bit of memory). This is what you would use if you had a short sound that you use very often.
If you set it to 1 then minecraft will play the sound directly from the file. This is useful for music, ambient sounds ect which are usually quite large (making the game pause when it's being loaded) and don't have to play very often.
I recommend you use the stream option only for big sound files that only play rarely.
If you want to play it to everyone on your server then they have to get the recourcepack. You can just upload it and put the link in the recource_pack tag of your server.properties file
You can play any sounds you like to the clients, as far as they have them in the sounds.json file, using the command /playsound.
More info here: http://minecraft.gamepedia.com/Commands#playsound