[ffmpeg] Improve version check and call it from hls (Fixes #4377)
parent
f6735be4da
commit
5f9b83944d
|
@ -48,6 +48,7 @@ from youtube_dl.utils import (
|
|||
intlist_to_bytes,
|
||||
args_to_str,
|
||||
parse_filesize,
|
||||
version_tuple,
|
||||
)
|
||||
|
||||
|
||||
|
@ -381,5 +382,10 @@ class TestUtil(unittest.TestCase):
|
|||
self.assertEqual(parse_filesize('1.2Tb'), 1200000000000)
|
||||
self.assertEqual(parse_filesize('1,24 KB'), 1240)
|
||||
|
||||
def test_version_tuple(self):
|
||||
self.assertEqual(version_tuple('1'), (1,))
|
||||
self.assertEqual(version_tuple('10.23.344'), (10, 23, 344))
|
||||
self.assertEqual(version_tuple('10-6'), (10, 6)) # avconv style
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -4,6 +4,7 @@ import os
|
|||
import re
|
||||
import subprocess
|
||||
|
||||
from ..postprocessor.ffmpeg import FFmpegPostProcessor
|
||||
from .common import FileDownloader
|
||||
from ..utils import (
|
||||
compat_urlparse,
|
||||
|
@ -32,6 +33,9 @@ class HlsFD(FileDownloader):
|
|||
return False
|
||||
cmd = [program] + args
|
||||
|
||||
ffpp = FFmpegPostProcessor(downloader=self)
|
||||
ffpp.check_version()
|
||||
|
||||
retval = subprocess.call(cmd)
|
||||
if retval == 0:
|
||||
fsize = os.path.getsize(encodeFilename(tmpfilename))
|
||||
|
|
|
@ -37,11 +37,11 @@ class FFmpegPostProcessor(PostProcessor):
|
|||
if not self._executable:
|
||||
raise FFmpegPostProcessorError('ffmpeg or avconv not found. Please install one.')
|
||||
|
||||
REQUIRED_VERSION = '1.0'
|
||||
required_version = '10-0' if self._uses_avconv() else '1.0'
|
||||
if is_outdated_version(
|
||||
self._versions[self._executable], REQUIRED_VERSION):
|
||||
self._versions[self._executable], required_version):
|
||||
warning = 'Your copy of %s is outdated, update %s to version %s or newer if you encounter any errors.' % (
|
||||
self._executable, self._executable, REQUIRED_VERSION)
|
||||
self._executable, self._executable, required_version)
|
||||
if self._downloader:
|
||||
self._downloader.report_warning(warning)
|
||||
|
||||
|
|
|
@ -1502,7 +1502,7 @@ def limit_length(s, length):
|
|||
|
||||
|
||||
def version_tuple(v):
|
||||
return [int(e) for e in v.split('.')]
|
||||
return tuple(int(e) for e in re.split(r'[-.]', v))
|
||||
|
||||
|
||||
def is_outdated_version(version, limit, assume_new=True):
|
||||
|
|
Loading…
Reference in New Issue