2008-03-19, 22:54
So, the development would be a little more involved than just doing this in a script, correct? I see this as multiple stages if done correctly, to allow room for future growth/development:
1. Build an IM client library into XBMC.
2. Set up the XBMC network settings to allow specifying the IM username/pass.
3. Come up with a simple message protocol to be used for the IM stuff: prefix messages with "MESSAGE" for actual messages intended to be read by that user or "PLUGINNAME" for messages intended to be read by the system.
4. Set up a plugin/script/whatever for "Peanut Gallery", with messages being prefixed by "PEANUTGALLERY" as they're sent over the IM client.
In this situation, Peanut Gallery would have to open a stream from somewhere online and send a message to all of the designated contacts with "PEANUTGALLERY: stream://..." and then once it starts playing with "PEANUTGALLERY: message: szsori,Look at the melons on that fruit stand!". You get the idea. The plugin/script/whatever would then have to handle doing the overlay of the avatars onto the video.
One more thing to consider: do you really have to worry about synchronizing the video/audio? In a perfect world with fiber connections, possibly, but people typing stuff and doing stuff with their avatar shouldn't matter if it's delayed up to 1 second anyway. For starting the video, you could always have it start exactly X seconds from when the stream message was sent, which would allow everyone to connect/cache and then start playing at approximately the same time. This way, XBMC's built-in video player might be able to handle things, with the script just overlaying stuff on top of it (is that possible?). If someone pauses, when they unpause they could be given the option to resync or continue on their own. Or you could just disable pausing or force synchronization by having the "master" send out its position every 15 seconds and have all the "slaves" sync to that.
Just trying to get all the possibilities out there first.
Oh, by the way, a built-in IM client would also allow for a lot of stuff that people ask for that the devs don't have time for. Stuff like home automation, enhanced remote control, etc. Since a built-in IM client could handle any type of message, you could write a script to send a message like "GIRDER: light5,on" and have an IM handler on the other end interacting with Girder.
1. Build an IM client library into XBMC.
2. Set up the XBMC network settings to allow specifying the IM username/pass.
3. Come up with a simple message protocol to be used for the IM stuff: prefix messages with "MESSAGE" for actual messages intended to be read by that user or "PLUGINNAME" for messages intended to be read by the system.
4. Set up a plugin/script/whatever for "Peanut Gallery", with messages being prefixed by "PEANUTGALLERY" as they're sent over the IM client.
In this situation, Peanut Gallery would have to open a stream from somewhere online and send a message to all of the designated contacts with "PEANUTGALLERY: stream://..." and then once it starts playing with "PEANUTGALLERY: message: szsori,Look at the melons on that fruit stand!". You get the idea. The plugin/script/whatever would then have to handle doing the overlay of the avatars onto the video.
One more thing to consider: do you really have to worry about synchronizing the video/audio? In a perfect world with fiber connections, possibly, but people typing stuff and doing stuff with their avatar shouldn't matter if it's delayed up to 1 second anyway. For starting the video, you could always have it start exactly X seconds from when the stream message was sent, which would allow everyone to connect/cache and then start playing at approximately the same time. This way, XBMC's built-in video player might be able to handle things, with the script just overlaying stuff on top of it (is that possible?). If someone pauses, when they unpause they could be given the option to resync or continue on their own. Or you could just disable pausing or force synchronization by having the "master" send out its position every 15 seconds and have all the "slaves" sync to that.
Just trying to get all the possibilities out there first.
Oh, by the way, a built-in IM client would also allow for a lot of stuff that people ask for that the devs don't have time for. Stuff like home automation, enhanced remote control, etc. Since a built-in IM client could handle any type of message, you could write a script to send a message like "GIRDER: light5,on" and have an IM handler on the other end interacting with Girder.