[postprocessor/embedthumbnail] Add support for non jpeg/png thumbnails (closes #25687)
This commit is contained in:
		
							parent
							
								
									45f6362464
								
							
						
					
					
						commit
						a31a022efd
					
				
					 1 changed files with 22 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -41,6 +41,28 @@ class EmbedThumbnailPP(FFmpegPostProcessor):
 | 
			
		|||
                'Skipping embedding the thumbnail because the file is missing.')
 | 
			
		||||
            return [], info
 | 
			
		||||
 | 
			
		||||
        # Check for mislabeled webp file
 | 
			
		||||
        with open(encodeFilename(thumbnail_filename), "rb") as f:
 | 
			
		||||
            b = f.read(16)
 | 
			
		||||
        if b'\x57\x45\x42\x50' in b:  # Binary for WEBP
 | 
			
		||||
            [thumbnail_filename_path, thumbnail_filename_extension] = os.path.splitext(thumbnail_filename)
 | 
			
		||||
            if not thumbnail_filename_extension == ".webp":
 | 
			
		||||
                webp_thumbnail_filename = thumbnail_filename_path + ".webp"
 | 
			
		||||
                os.rename(encodeFilename(thumbnail_filename), encodeFilename(webp_thumbnail_filename))
 | 
			
		||||
                thumbnail_filename = webp_thumbnail_filename
 | 
			
		||||
 | 
			
		||||
        # If not a jpg or png thumbnail, convert it to jpg using ffmpeg
 | 
			
		||||
        if not os.path.splitext(thumbnail_filename)[1].lower() in ['.jpg', '.png']:
 | 
			
		||||
            jpg_thumbnail_filename = os.path.splitext(thumbnail_filename)[0] + ".jpg"
 | 
			
		||||
            jpg_thumbnail_filename = os.path.join(os.path.dirname(jpg_thumbnail_filename), os.path.basename(jpg_thumbnail_filename).replace('%', '_'))  # ffmpeg interprets % as image sequence
 | 
			
		||||
 | 
			
		||||
            self._downloader.to_screen('[ffmpeg] Converting thumbnail "%s" to JPEG' % thumbnail_filename)
 | 
			
		||||
 | 
			
		||||
            self.run_ffmpeg(thumbnail_filename, jpg_thumbnail_filename, ['-bsf:v', 'mjpeg2jpeg'])
 | 
			
		||||
 | 
			
		||||
            os.remove(encodeFilename(thumbnail_filename))
 | 
			
		||||
            thumbnail_filename = jpg_thumbnail_filename
 | 
			
		||||
 | 
			
		||||
        if info['ext'] == 'mp3':
 | 
			
		||||
            options = [
 | 
			
		||||
                '-c', 'copy', '-map', '0', '-map', '1',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue