Toward a unified abstract content API
- Track: Open Media
- Room: K.3.401
- Day: Sunday
- Start: 09:00
- End: 09:40
- Video only: k3401
- Chat: Join the conversation!
[Liquidsoap])(https://www.liquidsoap.info/) is a general-purpose scripting language specialized in creating media stream.
Recently, the tool was adapted to incorporate an abstract notion of content that can support raw content (PCM audio, YUV video) but also opaque encoded content such as mp3 audio, x264 encoded video, etc.
Such content can be read from files, separated into different tracks and recombined at will through different outputs (icecast, files, srt, rtmp, etc) without the need to decode and re-encode.
The backbone of this abstraction relies on the recent advances in abstract descriptions of streams as popularized by tools such as FFmpeg.
Typically, a media stream is described via opaque binary blobs, representing fractions of audio (an mp3 frame, a raw PCM segment), video (a video frame), etc.
In this context, Presentation Timestamp (PTS) and Decoder Timestamp (DTS) can efficiently describe when to present a piece of content to the listener/viewer or the encoder/encapsulation.
However, when applied to dynamic streams produced by liquidsoap scripts, another layer of complexity arises. Most liquidsoap streams need to be produced in real-time and can dynamically switch from one stream to the next.
This results in added complexity with regard to stream description: how to make sure that abstract content is generated in real-time (e.g. 2s of content is generated in 2s, slowing down the application if needed), how to maintain DTS/PTS consistency when switching from one stream to the next, etc.
In this talk, we will present the challenges and solutions that are currently implemented in liquidsoap and explain the kind of abstract content API we hope to see emerging in the future to support the next generation of media streaming application.
Speakers
Romain Beauxis |