summaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2019-10-27 11:39:08 -0700
committerSteven Liu <lq@chinaffmpeg.org>2019-10-30 17:59:02 +0800
commitd6ac6650b911f0957e69545d7fc25be6b7728705 (patch)
treee984227389c050e6aa67a1b1fdc6b9912c876d91 /libavformat
parentfd172185580c1ccdcfb90bbfdb59fa806fad3117 (diff)
downloadffmpeg-streaming-d6ac6650b911f0957e69545d7fc25be6b7728705.zip
ffmpeg-streaming-d6ac6650b911f0957e69545d7fc25be6b7728705.tar.gz
avformat/hls: Set AVFMT_TS_DISCONT flag on HLS input format
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 Reviewed-by: Steven Liu <lq@onvideo.cn> Reviewed-by: Dennis Mungai <dmngaie@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/hls.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/hls.c b/libavformat/hls.c
index d7f4d5b..ac151d5 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,
OpenPOWER on IntegriCloud