mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	Correctly calculate ffmpeg version based on ffmpeg path (#16041)
* Correctly calculate ffmpeg version based on ffmpeg path * Formatting
This commit is contained in:
		
							parent
							
								
									3947e79086
								
							
						
					
					
						commit
						0ee2e404da
					
				| @ -215,7 +215,6 @@ ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 | |||||||
| ENV OPENCV_FFMPEG_LOGLEVEL=8 | ENV OPENCV_FFMPEG_LOGLEVEL=8 | ||||||
| 
 | 
 | ||||||
| ENV PATH="/usr/local/go2rtc/bin:/usr/local/tempio/bin:/usr/local/nginx/sbin:${PATH}" | ENV PATH="/usr/local/go2rtc/bin:/usr/local/tempio/bin:/usr/local/nginx/sbin:${PATH}" | ||||||
| ENV LIBAVFORMAT_VERSION_MAJOR=60 |  | ||||||
| 
 | 
 | ||||||
| # Install dependencies | # Install dependencies | ||||||
| RUN --mount=type=bind,source=docker/main/install_deps.sh,target=/deps/install_deps.sh \ | RUN --mount=type=bind,source=docker/main/install_deps.sh,target=/deps/install_deps.sh \ | ||||||
|  | |||||||
| @ -42,8 +42,14 @@ function migrate_db_path() { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function set_libva_version() { | ||||||
|  |     local ffmpeg_path=$(python3 docker/main/rootfs/usr/local/ffmpeg/get_ffmpeg_path.py) | ||||||
|  |     export LIBAVFORMAT_VERSION_MAJOR=$($ffmpeg_path -version | grep -Po "libavformat\W+\K\d+") | ||||||
|  | } | ||||||
|  | 
 | ||||||
| echo "[INFO] Preparing Frigate..." | echo "[INFO] Preparing Frigate..." | ||||||
| migrate_db_path | migrate_db_path | ||||||
|  | set_libva_version | ||||||
| echo "[INFO] Starting Frigate..." | echo "[INFO] Starting Frigate..." | ||||||
| 
 | 
 | ||||||
| cd /opt/frigate || echo "[ERROR] Failed to change working directory to /opt/frigate" | cd /opt/frigate || echo "[ERROR] Failed to change working directory to /opt/frigate" | ||||||
|  | |||||||
| @ -43,6 +43,11 @@ function get_ip_and_port_from_supervisor() { | |||||||
|     export FRIGATE_GO2RTC_WEBRTC_CANDIDATE_INTERNAL="${ip_address}:${webrtc_port}" |     export FRIGATE_GO2RTC_WEBRTC_CANDIDATE_INTERNAL="${ip_address}:${webrtc_port}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function set_libva_version() { | ||||||
|  |     local ffmpeg_path=$(python3 /usr/local/ffmpeg/get_ffmpeg_path.py) | ||||||
|  |     export LIBAVFORMAT_VERSION_MAJOR=$($ffmpeg_path -version | grep -Po "libavformat\W+\K\d+") | ||||||
|  | } | ||||||
|  | 
 | ||||||
| if [[ -f "/dev/shm/go2rtc.yaml" ]]; then | if [[ -f "/dev/shm/go2rtc.yaml" ]]; then | ||||||
|     echo "[INFO] Removing stale config from last run..." |     echo "[INFO] Removing stale config from last run..." | ||||||
|     rm /dev/shm/go2rtc.yaml |     rm /dev/shm/go2rtc.yaml | ||||||
| @ -61,6 +66,8 @@ else | |||||||
|     echo "[WARNING] Unable to remove existing go2rtc config. Changes made to your frigate config file may not be recognized. Please remove the /dev/shm/go2rtc.yaml from your docker host manually." |     echo "[WARNING] Unable to remove existing go2rtc config. Changes made to your frigate config file may not be recognized. Please remove the /dev/shm/go2rtc.yaml from your docker host manually." | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | set_libva_version | ||||||
|  | 
 | ||||||
| readonly config_path="/config" | readonly config_path="/config" | ||||||
| 
 | 
 | ||||||
| if [[ -x "${config_path}/go2rtc" ]]; then | if [[ -x "${config_path}/go2rtc" ]]; then | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								docker/main/rootfs/usr/local/ffmpeg/get_ffmpeg_path.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								docker/main/rootfs/usr/local/ffmpeg/get_ffmpeg_path.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | import json | ||||||
|  | import os | ||||||
|  | import shutil | ||||||
|  | import sys | ||||||
|  | 
 | ||||||
|  | from ruamel.yaml import YAML | ||||||
|  | 
 | ||||||
|  | sys.path.insert(0, "/opt/frigate") | ||||||
|  | from frigate.const import ( | ||||||
|  |     DEFAULT_FFMPEG_VERSION, | ||||||
|  |     INCLUDED_FFMPEG_VERSIONS, | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | sys.path.remove("/opt/frigate") | ||||||
|  | 
 | ||||||
|  | yaml = YAML() | ||||||
|  | 
 | ||||||
|  | config_file = os.environ.get("CONFIG_FILE", "/config/config.yml") | ||||||
|  | 
 | ||||||
|  | # Check if we can use .yaml instead of .yml | ||||||
|  | config_file_yaml = config_file.replace(".yml", ".yaml") | ||||||
|  | if os.path.isfile(config_file_yaml): | ||||||
|  |     config_file = config_file_yaml | ||||||
|  | 
 | ||||||
|  | try: | ||||||
|  |     with open(config_file) as f: | ||||||
|  |         raw_config = f.read() | ||||||
|  | 
 | ||||||
|  |     if config_file.endswith((".yaml", ".yml")): | ||||||
|  |         config: dict[str, any] = yaml.load(raw_config) | ||||||
|  |     elif config_file.endswith(".json"): | ||||||
|  |         config: dict[str, any] = json.loads(raw_config) | ||||||
|  | except FileNotFoundError: | ||||||
|  |     config: dict[str, any] = {} | ||||||
|  | 
 | ||||||
|  | path = config.get("ffmpeg", {}).get("path", "default") | ||||||
|  | if path == "default": | ||||||
|  |     if shutil.which("ffmpeg") is None: | ||||||
|  |         print(f"/usr/lib/ffmpeg/{DEFAULT_FFMPEG_VERSION}/bin/ffmpeg") | ||||||
|  |     else: | ||||||
|  |         print("ffmpeg") | ||||||
|  | elif path in INCLUDED_FFMPEG_VERSIONS: | ||||||
|  |     print(f"/usr/lib/ffmpeg/{path}/bin/ffmpeg") | ||||||
|  | else: | ||||||
|  |     print(f"{path}/bin/ffmpeg") | ||||||
| @ -12,7 +12,5 @@ RUN rm -rf /usr/lib/btbn-ffmpeg/ | |||||||
| RUN --mount=type=bind,source=docker/rpi/install_deps.sh,target=/deps/install_deps.sh \ | RUN --mount=type=bind,source=docker/rpi/install_deps.sh,target=/deps/install_deps.sh \ | ||||||
|     /deps/install_deps.sh |     /deps/install_deps.sh | ||||||
| 
 | 
 | ||||||
| ENV LIBAVFORMAT_VERSION_MAJOR=58 |  | ||||||
| 
 |  | ||||||
| WORKDIR /opt/frigate/ | WORKDIR /opt/frigate/ | ||||||
| COPY --from=rootfs / / | COPY --from=rootfs / / | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user