[FFmpeg-devel] [PATCH 2/2] Advertise current segment in streaming mode

Jeyapal, Karthick kjeyapal at akamai.com
Wed Jul 14 17:45:10 EEST 2021



On 6/24/21, 6:28 PM, "Kevin LaFlamme" <kevin at aiera.com> wrote:

>In streaming mode when using a segment list, the current segment should
>be listed so that clients can immediately request it even before
>complete. Without this, even though the segment is being written in a
>way that it can be requested while still writing, clients won't know
>it's available.
>---
> libavformat/dashenc.c | 2 ++
> 1 file changed, 2 insertions(+)
>
>diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
>index 2b8fbcbe6e..901999324f 100644
>--- a/libavformat/dashenc.c
>+++ b/libavformat/dashenc.c
>@@ -706,6 +706,8 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, >AVFormatCont
>             Segment *seg = os->segments[i];
>             avio_printf(out, "\t\t\t\t\t<SegmentURL media=\"%s\" />\n", seg->file);
>         }
>+        if (c->streaming)
>+            avio_printf(out, "\t\t\t\t\t<SegmentURL media=\"%s\" />\n", os->filename);
As far as I understand the streaming mode is better supported only with SegmentTemplate.
Adding the yet-to-be-completed segment in the SegmentList might break some backward compatibility with clients that doesn't support low latency streaming.
After we added streaming support in ffmpeg, DASH-IF came up with a spec for low latency streaming.
https://dashif.org/docs/CR-Low-Latency-Live-r8.pdf. This spec also specifies that SegmentTemplate is mandatory for low latency streaming.
>         avio_printf(out, "\t\t\t\t</SegmentList>\n");
>     }
>     if (!c->lhls || final) {
>-- 
>2.31.1
>



More information about the ffmpeg-devel mailing list