public function validate(string $attribute, mixed $value, Closure $fail): void 	{ 		try { 			if ($value instanceof UploadedFile) { 				$media = FFMpeg::open($value); 			} elseif (filter_var($value, FILTER_VALIDATE_URL)) { 				$media = FFMpeg::openUrl($value); 			} else { 				$fail('validation.file')->translate(['attribute' => $attribute]);  				return; 			} 		} catch (ExecutableNotFoundException) { 			$fail('validation.custom.missing-ffmpeg')->translate();  			return; 		}  		try { 			$value = $media->getDurationInSeconds(); 		} catch (RuntimeException) { 			$fail('validation.custom.media-length')->translate(['min' => $this->minLength, 'max' => $this->maxLength]);  			return; 		}  		if ($value < $this->minLength || $value > $this->maxLength) { 			$fail('validation.custom.media-length')->translate(['min' => $this->minLength, 'max' => $this->maxLength]); 		} 	}