Live support
Planning
This page is just for planning.
What is live support
The idea is being able to stream a live event from a real time encoded stream. Sounds quite simple but has a series of caveats. You have different streams (video, audio, subs, metadata) that got produced by independent sources more than often and that must be pushed to the network as soon as possible. The fact that the sources are independent means that is our task give some timestamps to make things synchronous (e.g voice – lips or voice – text), seeking is not supported since it is a live event.
Resource details
Supporting live means that we have a resource that is particular:
- Every client gets the same data, the data must not be consumed till the latest client gets it (bufferpool already does that)
- The sdp remains the same across the different calls but the data used to produce it could be as long as gone when we receive later requests.
- We need a way to present the multiple streams as a single resource (sd does that already)
Problems
- How are we going to feed the stream to the server?
- which format?
- the streams must be elementary streams by definition
- they are the output from an encoder (ffmpeg? vlc? gst?)
- the best would be having them already packed in rtp
- how to communicate?
- name pipes?
- sockets?
- shared memory?
- Do we need a specific demuxer?
- Yes, possibly one that gets the sdp data and the rtp streams directly and just pushes them to the bufferpool with almost no work
- No, we already have demuxer_sd that worked quite well in fenice even if it require lots of manual labour for h264.