mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[ffmpeg] Improve version check and call it from hls (Fixes #4377)
This commit is contained in:
		| @@ -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): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister