mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[FixupM3u8] Fixup MPEG-TS in MP4 container
Closes #1701, https://github.com/ytdl-org/youtube-dl/issues/26410
This commit is contained in:
		| @@ -2934,9 +2934,10 @@ class YoutubeDL(object): | ||||
|                     downloader = get_suitable_downloader(info_dict, self.params) if 'protocol' in info_dict else None | ||||
|                     downloader = downloader.__name__ if downloader else None | ||||
|                     ffmpeg_fixup(info_dict.get('requested_formats') is None and downloader == 'HlsFD', | ||||
|                                  'malformed AAC bitstream detected', FFmpegFixupM3u8PP) | ||||
|                     ffmpeg_fixup(downloader == 'WebSocketFragmentFD', 'malformed timestamps detected', FFmpegFixupTimestampPP) | ||||
|                     ffmpeg_fixup(downloader == 'WebSocketFragmentFD', 'malformed duration detected', FFmpegFixupDurationPP) | ||||
|                                  'Possible MPEG-TS in MP4 container or malformed AAC timestamps', | ||||
|                                  FFmpegFixupM3u8PP) | ||||
|                     ffmpeg_fixup(downloader == 'WebSocketFragmentFD', 'Malformed timestamps detected', FFmpegFixupTimestampPP) | ||||
|                     ffmpeg_fixup(downloader == 'WebSocketFragmentFD', 'Malformed duration detected', FFmpegFixupDurationPP) | ||||
|  | ||||
|                 fixup() | ||||
|                 try: | ||||
|   | ||||
| @@ -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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan