[ffmpeg] Accurately detect presence of setts

Closes #1237
This commit is contained in:
pukkandan 2021-11-04 02:24:12 +05:30
parent 673c0057e8
commit 832e9000c7
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

View File

@ -99,7 +99,10 @@ def get_ffmpeg_version(path, prog):
if prog != 'ffmpeg' or not out: if prog != 'ffmpeg' or not out:
return return
self._features['fdk'] = '--enable-libfdk-aac' in out self._features = {
'fdk': '--enable-libfdk-aac' in out,
'setts': 'setts' in out.splitlines(),
}
self.basename = None self.basename = None
self.probe_basename = None self.probe_basename = None
@ -827,11 +830,10 @@ def __init__(self, downloader=None, trim=0.001):
@PostProcessor._restrict_to(images=False) @PostProcessor._restrict_to(images=False)
def run(self, info): def run(self, info):
required_version = '4.4' if not self._features.get('setts'):
if is_outdated_version(self._versions[self.basename], required_version):
self.report_warning( self.report_warning(
'A re-encode is needed to fix timestamps in older versions of ffmpeg. ' 'A re-encode is needed to fix timestamps in older versions of ffmpeg. '
f'Please install ffmpeg {required_version} or later to fixup without re-encoding') 'Please install ffmpeg 4.4 or later to fixup without re-encoding')
opts = ['-vf', 'setpts=PTS-STARTPTS'] opts = ['-vf', 'setpts=PTS-STARTPTS']
else: else:
opts = ['-c', 'copy', '-bsf', 'setts=ts=TS-STARTPTS'] opts = ['-c', 'copy', '-bsf', 'setts=ts=TS-STARTPTS']