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.