Skip to main content
Glama

Voice Mode

by mbailey
ffmpeg_check.py5.66 kB
"""FFmpeg detection and installation helper for voice-mode.""" import os import platform import shutil import subprocess import sys from typing import Optional, Tuple def check_ffmpeg() -> Tuple[bool, Optional[str]]: """Check if FFmpeg is installed and accessible. Returns: Tuple of (is_installed, path_to_ffmpeg) """ ffmpeg_path = shutil.which('ffmpeg') return (ffmpeg_path is not None, ffmpeg_path) def check_ffprobe() -> Tuple[bool, Optional[str]]: """Check if ffprobe is installed and accessible. Returns: Tuple of (is_installed, path_to_ffprobe) """ ffprobe_path = shutil.which('ffprobe') return (ffprobe_path is not None, ffprobe_path) def get_ffmpeg_version() -> Optional[str]: """Get FFmpeg version if installed. Returns: Version string or None if not installed """ try: result = subprocess.run( ['ffmpeg', '-version'], capture_output=True, text=True, timeout=5 ) if result.returncode == 0: # Extract version from first line first_line = result.stdout.split('\n')[0] if 'ffmpeg version' in first_line: return first_line.split('ffmpeg version')[1].split()[0] except (subprocess.SubprocessError, FileNotFoundError): pass return None def get_install_instructions() -> str: """Get platform-specific FFmpeg installation instructions. Returns: Installation instructions for the current platform """ system = platform.system().lower() if system == 'darwin': # macOS return """FFmpeg is required for audio processing but was not found. To install FFmpeg on macOS: 1. Using Homebrew (recommended): brew install ffmpeg 2. Using MacPorts: sudo port install ffmpeg If you don't have Homebrew, install it first: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" After installation, restart your terminal or reload your shell configuration.""" elif system == 'linux': # Try to detect the Linux distribution distro_info = {} try: with open('/etc/os-release', 'r') as f: for line in f: if '=' in line: key, value = line.strip().split('=', 1) distro_info[key] = value.strip('"') except FileNotFoundError: pass distro_id = distro_info.get('ID', '').lower() if distro_id in ['ubuntu', 'debian']: return """FFmpeg is required for audio processing but was not found. To install FFmpeg on Ubuntu/Debian: sudo apt update sudo apt install ffmpeg After installation, verify with: ffmpeg -version""" elif distro_id in ['fedora', 'rhel', 'centos']: return """FFmpeg is required for audio processing but was not found. To install FFmpeg on Fedora/RHEL: sudo dnf install ffmpeg For older versions using yum: sudo yum install ffmpeg After installation, verify with: ffmpeg -version""" elif distro_id in ['arch', 'manjaro']: return """FFmpeg is required for audio processing but was not found. To install FFmpeg on Arch Linux: sudo pacman -S ffmpeg After installation, verify with: ffmpeg -version""" else: return """FFmpeg is required for audio processing but was not found. To install FFmpeg on Linux, use your distribution's package manager: - Ubuntu/Debian: sudo apt install ffmpeg - Fedora/RHEL: sudo dnf install ffmpeg - Arch Linux: sudo pacman -S ffmpeg - OpenSUSE: sudo zypper install ffmpeg After installation, verify with: ffmpeg -version""" elif system == 'windows': return """FFmpeg is required for audio processing but was not found. For Windows users, we recommend using WSL2 (Windows Subsystem for Linux): 1. Install WSL2 if not already installed 2. Follow the Ubuntu/Debian instructions above Alternatively, for native Windows: 1. Download FFmpeg from: https://www.ffmpeg.org/download.html 2. Extract the archive 3. Add the bin folder to your system PATH 4. Restart your terminal Note: Voice Mode works best in WSL2 on Windows.""" else: return f"""FFmpeg is required for audio processing but was not found. Platform: {system} Please install FFmpeg using your system's package manager or download from: https://www.ffmpeg.org/download.html""" def check_and_report_ffmpeg() -> bool: """Check FFmpeg installation and report status. Returns: True if FFmpeg is properly installed, False otherwise """ ffmpeg_installed, ffmpeg_path = check_ffmpeg() ffprobe_installed, ffprobe_path = check_ffprobe() if not ffmpeg_installed or not ffprobe_installed: print("\n" + "="*60) print("⚠️ FFmpeg Installation Required") print("="*60) print(get_install_instructions()) print("="*60 + "\n") return False # Both are installed, optionally report version version = get_ffmpeg_version() if version: # Only log this in debug mode import logging logger = logging.getLogger("voicemode") logger.debug(f"FFmpeg version {version} found at {ffmpeg_path}") return True def ensure_ffmpeg_or_exit(): """Ensure FFmpeg is installed or exit with helpful message.""" if not check_and_report_ffmpeg(): print("\n❌ Voice Mode cannot start without FFmpeg.") print("Please install FFmpeg and try again.\n") sys.exit(1)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbailey/voicemode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server