# Audio Extractor A Python tool for extracting and managing audio tracks from video files using FFmpeg. ## Features - **Extract Audio**: Extract all audio channels from video files as individual files - **Preserve Quality**: Maintains original bitrate and codec without re-encoding - **Batch Processing**: Process multiple video files from a folder - **Multi-track Support**: Automatically handles videos with multiple audio tracks - **Flexible Output**: Specify custom output folder ## Future Features - **Add Tracks**: Add individual audio files as new tracks to video files - **Track Titles**: Assign custom titles/names to audio tracks - **Batch Operations**: Apply operations to multiple files with matching base names ## Installation ### Prerequisites - Python 3.6+ - FFmpeg installed and accessible in your PATH - FFprobe (usually included with FFmpeg) ### Install FFmpeg **macOS** (using Homebrew): ```bash brew install ffmpeg ``` **Ubuntu/Debian**: ```bash sudo apt-get install ffmpeg ``` **Windows** (using Chocolatey): ```bash choco install ffmpeg ``` Or download from: https://ffmpeg.org/download.html ## Usage ### Extract Audio from a Single Video ```bash python main.py extract "path/to/video.mp4" -o ./audio_output ``` ### Extract Audio from All Videos in a Folder ```bash python main.py extract "./videos_folder" -o ./audio_output ``` ### Legacy Command Format The tool also supports the original command format: ```bash python main.py --extract "target" -o output_folder ``` ## Examples **Extract from single file:** ```bash python main.py extract "movie.mp4" -o ./extracted_audio ``` **Extract from entire folder:** ```bash python main.py extract "./my_videos" -o "./audio_tracks" ``` **Extract with default output folder (./audio_output):** ```bash python main.py extract "video.mkv" ``` ## How It Works 1. **Identifies video files** in the target path 2. **Analyzes audio streams** using ffprobe to detect codec and bitrate information 3. **Extracts each audio track** using FFmpeg's codec copy mode (no re-encoding) 4. **Preserves quality** by maintaining original bitrate and codec 5. **Names files** appropriately based on source video and track number ## Output Extracted audio files are saved with the following naming: - **Single audio track**: `video_name.aac` (or appropriate extension) - **Multiple audio tracks**: `video_name_audio_0.aac`, `video_name_audio_1.aac`, etc. ## Troubleshooting **"ffmpeg is not installed or not found in PATH"** - Ensure FFmpeg is installed and the `ffmpeg` command is accessible from your terminal - Test with: `ffmpeg -version` **"No audio streams found"** - The video file may not contain any audio tracks - Try analyzing the file with: `ffprobe "video.mp4"` **Extraction fails** - Check that the video file is not corrupted - Try opening it with a media player first - Check disk space in the output folder ## Development ### Project Structure ``` audio-extractor/ ├── main.py # Entry point and CLI argument parsing ├── audio_extractor/ │ ├── __init__.py │ ├── cli.py # CLI interface │ └── extractor.py # Core extraction logic ├── requirements.txt └── README.md ``` ### Adding Features To add new features: 1. Add command logic to `audio_extractor/extractor.py` 2. Add CLI interface to `audio_extractor/cli.py` 3. Add new command to the argument parser in `main.py` ## License MIT