We are currently developing a live stream application which involves:
a client written in C# that will capture frames from a webcam and has to encode them in a video chunk (more info to come)
A stream server written by us in Node.js which basically has only to receive the video chunks from the above client and send them to a webapp using Socket.io as the underlying transfer protocol
A webapp which will use the VIDEO tag + the MediaSource API to perform the playback of the video.
Due to the constraints imposed by both the supported video formats of the MediaSource API and the C# encoder APIs for these video formats (MPEG-DASH, WebM, OGG+Theora) we came with this solution in mind:
The C# client will encode 1 or 2 seconds of video in an OGG video using Theora as the video codec. Once the chunk is ready is sent to the stream server which will send it to the webapp.
The webapp will read this video chunk (that is actually a 1-2 second standalone video) from the network as if it was reading from file and chunk after chunk the webapp will reproduce them as if it was a single stream.
Unfortunatly nor me, neither the other guys in my team have any experience in video encoding/streaming, so my question is: does anyone know a good C# library that can produce an OGG encapsulated video from a sequence of frames captured from a webcam so it can be read from the MediaSource API without any troubles?
Any other solution, as long as it uses the video tag, the MediaSource API on the webapp and C# on the client, is well accepted.
I don't believe there are many popular libraries for OGG encoding out there. However, it would probably be best to create your own. I would start here: http://tools.ietf.org/html/rfc5334
I've had good luck with Gstreamer, but I'm not sure that it will work given your language and encoding requirements. Still its worth a look.