mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[YoutubeDL] Merge incompatible formats into mkv (#5456)
This commit is contained in:
		 Sergey M․
					Sergey M․
				
			
				
					committed by
					
						 Jaime Marquínez Ferrándiz
						Jaime Marquínez Ferrándiz
					
				
			
			
				
	
			
			
			 Jaime Marquínez Ferrándiz
						Jaime Marquínez Ferrándiz
					
				
			
						parent
						
							feccf29c87
						
					
				
				
					commit
					81cd954a51
				
			| @@ -1373,12 +1373,34 @@ class YoutubeDL(object): | ||||
|                                             ' The formats won\'t be merged') | ||||
|                     else: | ||||
|                         postprocessors = [merger] | ||||
|  | ||||
|                     def compatible_formats(formats): | ||||
|                         video, audio = formats | ||||
|                         # Check extension | ||||
|                         video_ext, audio_ext = audio.get('ext'), video.get('ext') | ||||
|                         if video_ext and audio_ext: | ||||
|                             COMPATIBLE_EXTS = ( | ||||
|                                 ('mp4', 'm4a', 'm4p', 'm4b', 'm4r', 'm4v'), | ||||
|                                 ('webm') | ||||
|                             ) | ||||
|                             for exts in COMPATIBLE_EXTS: | ||||
|                                 if video_ext in exts and audio_ext in exts: | ||||
|                                     return True | ||||
|                         # TODO: Check acodec/vcodec | ||||
|                         return False | ||||
|  | ||||
|                     requested_formats = info_dict['requested_formats'] | ||||
|                     # Merge incompatible formats into mkv | ||||
|                     if not compatible_formats(requested_formats): | ||||
|                         filename = os.path.splitext(filename)[0] + '.mkv' | ||||
|                         self.report_warning('You have requested formats uncompatible for merge. ' | ||||
|                                             'The formats will be merged into mkv') | ||||
|                     if os.path.exists(encodeFilename(filename)): | ||||
|                         self.to_screen( | ||||
|                             '[download] %s has already been downloaded and ' | ||||
|                             'merged' % filename) | ||||
|                     else: | ||||
|                         for f in info_dict['requested_formats']: | ||||
|                         for f in requested_formats: | ||||
|                             new_info = dict(info_dict) | ||||
|                             new_info.update(f) | ||||
|                             fname = self.prepare_filename(new_info) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user