mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-09-21 09:51:25 +02:00
Compare commits
No commits in common. "fc46f24dc51d984395fc84c8b6823fbe96bf2476" and "bb9ec9a24d9c3527854a963ecc97611972ad1ca0" have entirely different histories.
fc46f24dc5
...
bb9ec9a24d
|
@ -4242,7 +4242,7 @@ class YoutubeDL:
|
|||
self.write_debug(f'Skipping writing {label} thumbnail')
|
||||
return ret
|
||||
|
||||
if thumbnails and not self._ensure_dir_exists(filename):
|
||||
if not self._ensure_dir_exists(filename):
|
||||
return None
|
||||
|
||||
for idx, t in list(enumerate(thumbnails))[::-1]:
|
||||
|
|
|
@ -1046,23 +1046,20 @@ class FFmpegSplitChaptersPP(FFmpegPostProcessor):
|
|||
destination,
|
||||
['-ss', str(chapter['start_time']),
|
||||
'-t', str(chapter['end_time'] - chapter['start_time'])])
|
||||
|
||||
# FFmpeg adds metadata about all chapters from parent file to all split m4a files.
|
||||
# This is incorrect since there must be only single chapter in each file after split.
|
||||
# Such behavior confuses players who think multiple chapters present
|
||||
def _set_out_opts(self, ext, chapter_title):
|
||||
out_opts = [*self.stream_copy_opts()]
|
||||
out_opts.extend(['-map_metadata', '0'])
|
||||
# exclude chapters metadata but keep everything else
|
||||
out_opts.extend(['-map_chapters', '-1'])
|
||||
if not chapter_title:
|
||||
return out_opts
|
||||
# replace global title with chapter specific title in split files
|
||||
if ext == 'm4a':
|
||||
out_opts.extend(['-metadata', 'title={}'.format(chapter_title)])
|
||||
if ext == 'opus':
|
||||
out_opts.extend(['-metadata:s', 'title={}'.format(chapter_title)])
|
||||
return out_opts
|
||||
return [
|
||||
*self.stream_copy_opts(),
|
||||
# For m4a ffmpeg copies all available parent track chapters to split tracks metadata
|
||||
# And such behavior confuses players
|
||||
# Wipe parent track metadata from split tracks and fill out only title
|
||||
'-metadata', 'title={}'.format(chapter_title),
|
||||
'-map_metadata','-1']
|
||||
else:
|
||||
return self.stream_copy_opts()
|
||||
|
||||
@PostProcessor._restrict_to(images=False)
|
||||
def run(self, info):
|
||||
|
@ -1078,7 +1075,7 @@ class FFmpegSplitChaptersPP(FFmpegPostProcessor):
|
|||
self.to_screen('Splitting video by chapters; %d chapters found' % len(chapters))
|
||||
for idx, chapter in enumerate(chapters):
|
||||
destination, opts = self._ffmpeg_args_for_chapter(idx + 1, chapter, info)
|
||||
out_file_opts = self._set_out_opts(info['ext'], chapter.get('title', ''))
|
||||
out_file_opts = self._set_out_opts(info['ext'], chapter['title'])
|
||||
self.real_run_ffmpeg([(in_file, opts)], [(destination, out_file_opts)])
|
||||
if in_file != info['filepath']:
|
||||
self._delete_downloaded_files(in_file, msg=None)
|
||||
|
|
Loading…
Reference in New Issue
Block a user