[FFmpeg-devel] [PATCH] avformat/hls: Set AVFMT_TS_DISCONT flag on HLS input format

Steven Liu lq at chinaffmpeg.org
Wed Oct 30 12:23:20 EET 2019



> 在 2019年10月30日,09:05,Dennis Mungai <dmngaie at gmail.com> 写道:
> 
> On Tue, 29 Oct 2019 at 06:07, Steven Liu <lq at chinaffmpeg.org> wrote:
>> 
>> 
>> 
>>> 在 2019年10月29日,01:09,Dennis Mungai <dmngaie at gmail.com> 写道:
>>> 
>>> On Mon, 28 Oct 2019 at 05:45, Steven Liu <lq at chinaffmpeg.org> wrote:
>>>> 
>>>> 
>>>> 
>>>>> 在 2019年10月28日,02:39,Philip Langdale <philipl at overt.org> 写道:
>>>>> 
>>>>> There have been many reports over the years about problems when
>>>>> taking an HLS stream as input to `ffmpeg` where there are timestamp
>>>>> discontinuities present. This is explicitly supported in the
>>>>> HLS spec (EXT-X-DISCONTINUITY) and often used for ad injection.
>>>>> 
>>>>> Various fixes and work-arounds have been proposed over the years,
>>>>> but one step that seems obvious, even if it's not a complete fix,
>>>>> is to mark the HLS input format as supporting discontinuities. This
>>>>> will prevent timestamp fixup logic in ffmpeg.c kicking in that ends
>>>>> up mangling the timestamps unnecessarily.
>>>>> 
>>>>> I've tested this out with an example provided by Joe Koberg early
>>>>> last year, and it is sufficient to allow `ffmpeg` to download and
>>>>> mux the stream correctly. Joe had briefly suggested that other
>>>>> situations can still be handled incorrectly, but this seems like
>>>>> a strict improvement.
>>>>> 
>>>>> Joe's example:
>>>>> 
>>>>> https://s3.amazonaws.com/playon-test-videos/discont_test_new/discont_test.m3u8
>>>>> ---
>>>>> libavformat/hls.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>> 
>>>>> diff --git a/libavformat/hls.c b/libavformat/hls.c
>>>>> index d7f4d5b442..ac151d5ca4 100644
>>>>> --- a/libavformat/hls.c
>>>>> +++ b/libavformat/hls.c
>>>>> @@ -2326,7 +2326,7 @@ AVInputFormat ff_hls_demuxer = {
>>>>>   .long_name      = NULL_IF_CONFIG_SMALL("Apple HTTP Live Streaming"),
>>>>>   .priv_class     = &hls_class,
>>>>>   .priv_data_size = sizeof(HLSContext),
>>>>> -    .flags          = AVFMT_NOGENSEARCH,
>>>>> +    .flags          = AVFMT_NOGENSEARCH | AVFMT_TS_DISCONT,
>>>>>   .read_probe     = hls_probe,
>>>>>   .read_header    = hls_read_header,
>>>>>   .read_packet    = hls_read_packet,
>>>>> --
>>>>> 2.20.1
>>>>> 
>>>>> _______________________________________________
>>>>> ffmpeg-devel mailing list
>>>>> ffmpeg-devel at ffmpeg.org
>>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>> 
>>>>> To unsubscribe, visit link above, or email
>>>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe”.
>>>> 
>>>> LGTM, whatever other more reasons, this can fix one of those problems.
>>>> 
>>>> Thanks
>>>> Steven
>>> 
>>> This patch actually fixes the occurence of DTS and PTS discontinuities
>>> I've been seeing with (some) HLS inputs that have discontinuities due
>>> to ad insertion(s). 10+ hours later without a single discontinuity.
>> 
>> Thanks Dennis, Will push this patch after 24hours if there have no objections.
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel at ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> 
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>> 
>> Thanks
>> Steven
> 
> 
> Looking forward
pushed

> 

Thanks
Steven





More information about the ffmpeg-devel mailing list