Files
2gopus/go-version/README.md
2026-03-22 00:54:34 -07:00

5.2 KiB

2gopus - Audio to Opus Converter (Go Version)

A modern, feature-rich audio conversion tool written in Go that converts various audio formats to Opus/OGG format with extensive configuration options.

Features

  • Multiple Input Formats: MP3, WAV, FLAC, OGG, M4A, AAC, WMA
  • High-Quality Output: Opus and OGG formats
  • Concurrent Processing: Multi-threaded conversion for faster processing
  • Flexible Configuration: Extensive options for quality, bitrate, sample rate, and more
  • Batch Processing: Convert entire directories recursively
  • Safety Features: Dry-run mode, verbose logging, and error handling
  • Cross-Platform: Works on Linux, macOS, and Windows

Installation

Prerequisites

  • Go 1.21 or later
  • Git (for dependency management)

Build from Source

# Clone or download the source
cd 2gopus

# Download dependencies
make deps

# Build the binary
make build

# Install system-wide (optional)
sudo make install

Usage

Basic Usage

# Convert all audio files in current directory
./2gopus-go

# Convert files from specific directory
./2gopus-go -input /path/to/music -output /path/to/converted

# High quality conversion
./2gopus-go -quality 8 -bitrate 192

# Preview what would be converted (dry run)
./2gopus-go -dry-run -verbose

Advanced Usage

# Fast conversion with 8 threads, delete originals
./2gopus-go -threads 8 -delete -verbose

# Convert to OGG format with specific settings
./2gopus-go -format ogg -quality 6 -bitrate 160 -samplerate 48000

# Process only current directory (no recursion)
./2gopus-go -recursive=false -input ./music

Command Line Options

Option Type Default Description
-input string "." Input directory to scan for audio files
-output string "." Output directory for converted files
-quality int 5 Opus quality setting (0-10, higher is better)
-bitrate int 128 Target bitrate in kbps
-samplerate int 48000 Sample rate for output
-channels int 2 Number of channels (1=mono, 2=stereo)
-recursive bool true Scan subdirectories recursively
-delete bool false Delete original files after conversion
-threads int 4 Number of concurrent conversion threads
-verbose bool false Enable verbose output
-dry-run bool false Show what would be converted without converting
-format string "opus" Output format (opus, ogg)
-compression int 5 Compression level (0-10)
-help, -h bool false Show help message

Examples

Batch Conversion

# Convert entire music library
./2gopus-go -input /home/user/Music -output /home/user/Music/Opus -quality 7 -threads 8

High Quality Conversion

# Maximum quality settings
./2gopus-go -quality 10 -bitrate 320 -samplerate 48000 -channels 2

Space-Saving Conversion

# Lower quality for smaller files
./2gopus-go -quality 3 -bitrate 64 -delete

Preview Mode

# See what would be converted
./2gopus-go -dry-run -verbose -input /path/to/audio

Supported Formats

Input Formats

  • MP3 (.mp3) - MPEG Audio Layer III
  • WAV (.wav) - Waveform Audio File Format
  • FLAC (.flac) - Free Lossless Audio Codec
  • OGG (.ogg) - Ogg Vorbis
  • M4A (.m4a) - MPEG-4 Audio
  • AAC (.aac) - Advanced Audio Coding
  • WMA (.wma) - Windows Media Audio

Output Formats

  • Opus (.opus) - Modern, efficient audio codec
  • OGG (.ogg) - Ogg container with Opus codec

Performance Tips

  1. Use Multiple Threads: Increase -threads for faster conversion on multi-core systems
  2. Quality vs Speed: Higher quality settings take longer but produce better results
  3. Batch Processing: Process large directories in batches to manage memory usage
  4. Storage: Use -delete carefully - test with -dry-run first

Troubleshooting

Common Issues

  1. "No audio files found"

    • Check that your input directory contains supported audio formats
    • Verify file extensions are lowercase (.mp3, not .MP3)
  2. "Permission denied"

    • Ensure you have read access to input files
    • Ensure you have write access to output directory
  3. "Out of memory"

    • Reduce the number of threads with -threads
    • Process files in smaller batches

Debug Mode

Use verbose mode to see detailed conversion information:

./2gopus-go -verbose -input /path/to/audio

Development

Building from Source

# Install dependencies
go mod download

# Run tests
go test -v

# Build for current platform
go build -o 2gopus-go main.go

# Build for multiple platforms
GOOS=linux GOARCH=amd64 go build -o 2gopus-go-linux main.go
GOOS=windows GOARCH=amd64 go build -o 2gopus-go.exe main.go
GOOS=darwin GOARCH=amd64 go build -o 2gopus-go-macos main.go

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is open source. Please check the license file for details.

Changelog

Version 1.0.0

  • Initial Go implementation
  • Support for MP3 and WAV input formats
  • Opus output format
  • Multi-threaded processing
  • Extensive configuration options
  • Cross-platform support