We’re used to programs like Skype, where video chat is asynchronous, you’re constantly both receiving and transmitting video and audio. This is a great platform for communications, but a terrible platform for storage and bandwidth usage.
I was thinking about how this could be achieved within an app in the current browser and had the following thoughts:
User A and User B connect to each other and establish a session where they are both short-polling new items within a shared mutable data list
User A records a short video / audio segment using the MediaRecorder API.
The frames from the video are extracted from the file stored locally by MediaRecorder and uploaded via the SAFE API to the mutable data list
User B is short-polling for new data and a video segment is found, the segment is downloaded, stored locally as a file and then played.
It would be fascinating to see how well this would perform. MaidSafe did produce a demo video chat, but that was IP to IP, just using SAFE to establish the endpoints. But if there was a way of getting truly anonymous video chat (or just sound), even at low quality that would be a big deal I think.
This would definitely be a popular feature, it wouldn’t take much after that to get a SafePhone. Going the webrtc route worked really well in Firefox Hello… for some reason Mozilla got rid of it and I never found a good reason as to why. Maybe resurrecting something similar inside of Peruse would be a nice option, but a pure SAFE method is good and fun to consider. Shared mutable data is a neat approach.
Seems like one might be able to readily setup an analogous system to unix sockets or a fifo via a couple MD sets. That way each user could have their own broadcast and receive channels. If you actually want to record the chat sessions, which is a nice feature at times, you might want to bring in Immutable chunks too. Different options for different use cases etc… I’m unsure if there would be any cost savings of using MD updates vs. just streaming immutable data chunks.
The impression I get is that whether you update an MD or save a fresh ImD chunk it still costs the same number of PUTs… a while back in the forums I recall there was some talk that SD or MD updates could be free, but I’m not sure that is still the consensus… likely it’s not.
I’d like to point out that the WebRTC demo will see the light of day again soon and likely help showcase the encrypted comms and p2p networking of crust with the upcoming Alpha 3 Network. So even if it is IP to IP, all connections will be encrypted in every event! I think that is actually very sufficient.