aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/YoutubeDL.py
diff options
context:
space:
mode:
authorremitamine <remitamine@gmail.com>2016-03-05 18:37:28 +0100
committerremitamine <remitamine@gmail.com>2016-03-05 18:37:28 +0100
commit090eb8e25f08f36827772ced4c7420b59c616b8b (patch)
tree53c8301cd4519bc432eba3bc419a32bcbb2b71ea /youtube_dl/YoutubeDL.py
parenta9793f58a1971e3f458be01200df485f4e9b0bda (diff)
parentf17f86513eaa09c2945b4a48a28efe5152be7017 (diff)
downloadyoutube-dl-090eb8e25f08f36827772ced4c7420b59c616b8b.tar.xz
Merge pull request #8718 from remitamine/m3u8-fixup
Add fixup for media files produced by HlsNative downloader(fixes #4776)
Diffstat (limited to 'youtube_dl/YoutubeDL.py')
-rwxr-xr-xyoutube_dl/YoutubeDL.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py
index f91851df9..94e4ea432 100755
--- a/youtube_dl/YoutubeDL.py
+++ b/youtube_dl/YoutubeDL.py
@@ -85,6 +85,7 @@ from .extractor import get_info_extractor, gen_extractors
from .downloader import get_suitable_downloader
from .downloader.rtmp import rtmpdump_version
from .postprocessor import (
+ FFmpegFixupM3u8PP,
FFmpegFixupM4aPP,
FFmpegFixupStretchedPP,
FFmpegMergerPP,
@@ -1671,6 +1672,22 @@ class YoutubeDL(object):
else:
assert fixup_policy in ('ignore', 'never')
+ if info_dict.get('protocol') == 'm3u8_native' or info_dict.get('protocol') == 'm3u8' and self._downloader.params.get('hls_prefer_native', False):
+ if fixup_policy == 'warn':
+ self.report_warning('%s: malformated aac bitstream.' % (
+ info_dict['id']))
+ elif fixup_policy == 'detect_or_warn':
+ fixup_pp = FFmpegFixupM3u8PP(self)
+ if fixup_pp.available:
+ info_dict.setdefault('__postprocessors', [])
+ info_dict['__postprocessors'].append(fixup_pp)
+ else:
+ self.report_warning(
+ '%s: malformated aac bitstream. Install ffmpeg or avconv to fix this automatically.' % (
+ info_dict['id']))
+ else:
+ assert fixup_policy in ('ignore', 'never')
+
try:
self.post_process(filename, info_dict)
except (PostProcessingError) as err: