|
|
@ -331,17 +331,34 @@ class FFmpegVideoConvertorPP(FFmpegPostProcessor): |
|
|
|
|
|
|
|
class FFmpegEmbedSubtitlePP(FFmpegPostProcessor): |
|
|
|
def run(self, information): |
|
|
|
if information['ext'] not in ['mp4', 'mkv']: |
|
|
|
self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 or mkv files') |
|
|
|
if information['ext'] not in ('mp4', 'webm', 'mkv'): |
|
|
|
self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4, webm or mkv files') |
|
|
|
return [], information |
|
|
|
subtitles = information.get('requested_subtitles') |
|
|
|
if not subtitles: |
|
|
|
self._downloader.to_screen('[ffmpeg] There aren\'t any subtitles to embed') |
|
|
|
return [], information |
|
|
|
|
|
|
|
sub_langs = list(subtitles.keys()) |
|
|
|
filename = information['filepath'] |
|
|
|
sub_filenames = [subtitles_filename(filename, lang, sub_info['ext']) for lang, sub_info in subtitles.items()] |
|
|
|
|
|
|
|
ext = information['ext'] |
|
|
|
sub_langs = [] |
|
|
|
sub_filenames = [] |
|
|
|
webm_vtt_warn = False |
|
|
|
|
|
|
|
for lang, sub_info in subtitles.items(): |
|
|
|
sub_ext = sub_info['ext'] |
|
|
|
if ext != 'webm' or ext == 'webm' and sub_ext == 'vtt': |
|
|
|
sub_langs.append(lang) |
|
|
|
sub_filenames.append(subtitles_filename(filename, lang, sub_ext)) |
|
|
|
else: |
|
|
|
if not webm_vtt_warn and ext == 'webm' and sub_ext != 'vtt': |
|
|
|
webm_vtt_warn = True |
|
|
|
self._downloader.to_screen('[ffmpeg] Only WebVTT subtitles can be embedded in webm files') |
|
|
|
|
|
|
|
if not sub_langs: |
|
|
|
return [], information |
|
|
|
|
|
|
|
input_files = [filename] + sub_filenames |
|
|
|
|
|
|
|
opts = [ |
|
|
|