aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/postprocessor/ffmpeg.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-11-27 19:20:39 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-11-27 19:21:47 +0530
commite04b003e6469db220131812b4894ac2a1d5ee083 (patch)
treef4385db34a7b3578ca068abb74f6f6bec7a1752f /yt_dlp/postprocessor/ffmpeg.py
parent909b0d66f47c4fb73ee320f512f0c12502f16294 (diff)
downloadhypervideo-pre-e04b003e6469db220131812b4894ac2a1d5ee083.tar.lz
hypervideo-pre-e04b003e6469db220131812b4894ac2a1d5ee083.tar.xz
hypervideo-pre-e04b003e6469db220131812b4894ac2a1d5ee083.zip
[FixupM3u8] Fixup MPEG-TS in MP4 container
Closes #1701, https://github.com/ytdl-org/youtube-dl/issues/26410
Diffstat (limited to 'yt_dlp/postprocessor/ffmpeg.py')
-rw-r--r--yt_dlp/postprocessor/ffmpeg.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py
index 1bde170ce..e8b569d72 100644
--- a/yt_dlp/postprocessor/ffmpeg.py
+++ b/yt_dlp/postprocessor/ffmpeg.py
@@ -855,10 +855,21 @@ class FFmpegFixupM4aPP(FFmpegFixupPostProcessor):
class FFmpegFixupM3u8PP(FFmpegFixupPostProcessor):
+ def _needs_fixup(self, info):
+ yield info['ext'] in ('mp4', 'm4a')
+ yield info['protocol'].startswith('m3u8')
+ try:
+ metadata = self.get_metadata_object(info['filepath'])
+ except PostProcessingError as e:
+ self.report_warning(f'Unable to extract metadata: {e.msg}')
+ yield True
+ else:
+ yield traverse_obj(metadata, ('format', 'format_name'), casesense=False) == 'mpegts'
+
@PostProcessor._restrict_to(images=False)
def run(self, info):
- if self.get_audio_codec(info['filepath']) == 'aac':
- self._fixup('Fixing malformed AAC bitstream', info['filepath'], [
+ if all(self._needs_fixup(info)):
+ self._fixup('Fixing MPEG-TS in MP4 container', info['filepath'], [
'-c', 'copy', '-map', '0', '-dn', '-f', 'mp4', '-bsf:a', 'aac_adtstoasc'])
return [], info