|
@ -41,6 +41,28 @@ class EmbedThumbnailPP(FFmpegPostProcessor): |
|
|
'Skipping embedding the thumbnail because the file is missing.') |
|
|
'Skipping embedding the thumbnail because the file is missing.') |
|
|
return [], info |
|
|
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': |
|
|
if info['ext'] == 'mp3': |
|
|
options = [ |
|
|
options = [ |
|
|
'-c', 'copy', '-map', '0', '-map', '1', |
|
|
'-c', 'copy', '-map', '0', '-map', '1', |
|
|