From b1f416c603f99ab79885e31d615d556f95f2c435 Mon Sep 17 00:00:00 2001 From: Stuart Date: Sat, 6 Sep 2025 12:37:17 +0100 Subject: [PATCH] Log ffmpeg version at startup Added a utility function to retrieve the ffmpeg version and log it during application startup. This helps with diagnostics and ensures the correct ffmpeg binary is being used. --- frigate/app.py | 6 +++++- frigate/util/services.py | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/frigate/app.py b/frigate/app.py index 858247866..2b14af9bb 100644 --- a/frigate/app.py +++ b/frigate/app.py @@ -75,7 +75,7 @@ from frigate.timeline import TimelineProcessor from frigate.track.object_processing import TrackedObjectProcessor from frigate.util.builtin import empty_and_close_queue from frigate.util.image import UntrackedSharedMemory -from frigate.util.services import set_file_limit +from frigate.util.services import set_file_limit, get_ffmpeg_version from frigate.version import VERSION from frigate.watchdog import FrigateWatchdog @@ -552,6 +552,10 @@ class FrigateApp: self.start_record_cleanup() self.start_watchdog() + # Log ffmpeg version + ffmpeg_version = get_ffmpeg_version(self.config.ffmpeg.ffmpeg_path) + logger.info(f"Using ffmpeg: {ffmpeg_version}") + self.init_auth() try: diff --git a/frigate/util/services.py b/frigate/util/services.py index 50aa2e2b7..bf02322bf 100644 --- a/frigate/util/services.py +++ b/frigate/util/services.py @@ -782,6 +782,29 @@ def get_fs_type(path: str) -> str: return fsType +def get_ffmpeg_version(ffmpeg_path: str) -> str: + """Get ffmpeg version.""" + try: + result = sp.run( + [ffmpeg_path, "-version"], + capture_output=True, + text=True, + timeout=5 + ) + if result.returncode == 0: + # Extract version from output (first line contains version info) + first_line = result.stdout.split('\n')[0] + return first_line.strip() + else: + return f"Unknown (ffmpeg returned code {result.returncode})" + except FileNotFoundError: + return f"Not found at path: {ffmpeg_path}" + except sp.TimeoutExpired: + return "Timeout getting version" + except Exception as e: + return f"Error: {str(e)}" + + def calculate_shm_requirements(config) -> dict: try: storage_stats = shutil.disk_usage("/dev/shm")