Documentation
¶
Overview ¶
Package ffmpeg provides a cross-platform wrapper for the FFmpeg command line tool.
This package supports Linux, macOS (Darwin), and Windows (reserved for future implementation). The implementation uses runtime OS detection to provide platform-specific optimizations:
- Linux: Uses standard FFmpeg with NVIDIA GPU support detection
- macOS: Uses VideoToolbox hardware acceleration for Apple Silicon and Intel Macs
- Windows: Reserved for future implementation
Features:
- Multi-threaded processing with configurable concurrency
- GPU acceleration support (platform-dependent)
- Progress callback support
- Batch processing capabilities
- Process management with timeouts
- Audio conversion (any format to WAV/MP3)
- Video conversion (any format to MP4)
- Audio extraction from video
- Keyframe extraction from video
- Streaming support
Usage:
ffmpeg := NewFFmpeg()
config := Config{
MaxProcesses: 4,
MaxThreads: 8,
EnableGPU: true,
}
err := ffmpeg.Init(config)
if err != nil {
log.Fatal(err)
}
defer ffmpeg.Close()
// Convert audio
err = ffmpeg.Convert(ctx, ConvertOptions{
Input: "input.mp3",
Output: "output.wav",
Format: "wav",
})
// Extract audio from video
err = ffmpeg.Extract(ctx, ExtractOptions{
Input: "video.mp4",
Output: "audio.wav",
Type: "audio",
Format: "wav",
})
The package requires FFmpeg 6+ to be installed on the system.
Index ¶
- Constants
- func Inspect() map[string]*ToolStatus
- func ProcessChunkAudio(process *process.Process) interface{}
- func ProcessConvert(process *process.Process) interface{}
- func ProcessExtractAudio(process *process.Process) interface{}
- func ProcessInfo(process *process.Process) interface{}
- type BatchJob
- type ChunkInfo
- type ChunkOptions
- type ChunkResult
- type Config
- type ConvertOptions
- type DarwinFFmpeg
- func (f *DarwinFFmpeg) AddJob(job BatchJob) string
- func (f *DarwinFFmpeg) CancelJob(id string) error
- func (f *DarwinFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *DarwinFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *DarwinFFmpeg) Close() error
- func (f *DarwinFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
- func (f *DarwinFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
- func (f *DarwinFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
- func (f *DarwinFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
- func (f *DarwinFFmpeg) GetActiveProcesses() int
- func (f *DarwinFFmpeg) GetConfig() Config
- func (f *DarwinFFmpeg) GetJob(id string) (BatchJob, error)
- func (f *DarwinFFmpeg) GetMediaInfo(ctx context.Context, inputFile string) (*MediaInfo, error)
- func (f *DarwinFFmpeg) GetSystemInfo() (SystemInfo, error)
- func (f *DarwinFFmpeg) Init(config Config) error
- func (f *DarwinFFmpeg) KillAllProcesses() error
- func (f *DarwinFFmpeg) ListJobs() []BatchJob
- type ExtractOptions
- type FFmpeg
- type LinuxFFmpeg
- func (f *LinuxFFmpeg) AddJob(job BatchJob) string
- func (f *LinuxFFmpeg) CancelJob(id string) error
- func (f *LinuxFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *LinuxFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *LinuxFFmpeg) Close() error
- func (f *LinuxFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
- func (f *LinuxFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
- func (f *LinuxFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
- func (f *LinuxFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
- func (f *LinuxFFmpeg) GetActiveProcesses() int
- func (f *LinuxFFmpeg) GetConfig() Config
- func (f *LinuxFFmpeg) GetJob(id string) (BatchJob, error)
- func (f *LinuxFFmpeg) GetMediaInfo(ctx context.Context, inputFile string) (*MediaInfo, error)
- func (f *LinuxFFmpeg) GetSystemInfo() (SystemInfo, error)
- func (f *LinuxFFmpeg) Init(config Config) error
- func (f *LinuxFFmpeg) KillAllProcesses() error
- func (f *LinuxFFmpeg) ListJobs() []BatchJob
- type MediaInfo
- type ProgressCallback
- type ProgressInfo
- type SilencePeriod
- type SystemInfo
- type ToolStatus
- type WindowsFFmpeg
- func (f *WindowsFFmpeg) AddJob(job BatchJob) string
- func (f *WindowsFFmpeg) CancelJob(id string) error
- func (f *WindowsFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *WindowsFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
- func (f *WindowsFFmpeg) Close() error
- func (f *WindowsFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
- func (f *WindowsFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
- func (f *WindowsFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
- func (f *WindowsFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
- func (f *WindowsFFmpeg) GetActiveProcesses() int
- func (f *WindowsFFmpeg) GetConfig() Config
- func (f *WindowsFFmpeg) GetJob(id string) (BatchJob, error)
- func (f *WindowsFFmpeg) GetMediaInfo(ctx context.Context, inputFile string) (*MediaInfo, error)
- func (f *WindowsFFmpeg) GetSystemInfo() (SystemInfo, error)
- func (f *WindowsFFmpeg) Init(config Config) error
- func (f *WindowsFFmpeg) KillAllProcesses() error
- func (f *WindowsFFmpeg) ListJobs() []BatchJob
Constants ¶
const ( DefaultAudioFormat = "wav" // Default audio output format DefaultVideoFormat = "mp4" // Default video output format // Job types for batch processing JobTypeConvert = "convert" // Conversion job type JobTypeExtract = "extract" // Extraction job type // Job status constants JobStatusPending = "pending" // Job is waiting to be processed JobStatusRunning = "running" // Job is currently being processed JobStatusCompleted = "completed" // Job has completed successfully JobStatusFailed = "failed" // Job has failed with an error )
Default formats for audio and video conversion
Variables ¶
This section is empty.
Functions ¶
func Inspect ¶
func Inspect() map[string]*ToolStatus
Inspect checks the availability and version of ffmpeg and ffprobe. It performs a silent, non-fatal check suitable for system status reporting. This function does NOT use the lazy-initialized default instance; it performs its own independent detection.
func ProcessChunkAudio ¶
ProcessChunkAudio ffmpeg.ChunkAudio Split audio file into chunks using silence detection.
Args:
- inputPath string - Path to the audio file
- config map[string]interface{} - Chunk configuration (optional)
Config fields:
- max_duration float64 - Max chunk duration in seconds (default: 600 = 10 min)
- max_size int64 - Max chunk size in bytes (default: 25000000 = 25MB)
- silence_threshold float64 - Silence detection threshold in dB (default: -40)
- output_dir string - Output directory for chunks (optional, default: auto temp dir)
- format string - Output format (default: "mp3")
Returns: *ChunkResult - Chunk information including paths, durations, sizes
Note: If output_dir is not specified, files are created in OS temp directory. TS scripts without "system" fs access MUST provide output_dir explicitly. The caller is responsible for cleaning up the output directory when done.
Usage:
var result = Process("ffmpeg.ChunkAudio", "/path/to/audio.mp3", {"max_duration": 600})
// Returns: {"chunks": [...], "total_chunks": 3, "total_size": 12345, "output_dir": "/tmp/..."}
func ProcessConvert ¶
ProcessConvert ffmpeg.Convert Convert media file to another format.
Args:
- inputPath string - Path to the input media file
- config map[string]interface{} - Convert configuration
Config fields:
- format string - Output format (e.g. "mp3", "wav", "mp4")
- output_path string - Output file path (optional, default: temp file)
- bitrate string - Audio bitrate (e.g. "128k") (optional)
- sample_rate int - Audio sample rate (e.g. 16000) (optional)
Returns: string - Path to the output file
Note: If output_path is not specified, files are created in OS temp directory. TS scripts without "system" fs access MUST provide output_path explicitly.
Usage:
var outputPath = Process("ffmpeg.Convert", "/path/to/input.mp4", {"format": "mp3", "bitrate": "128k"})
// Returns: "/tmp/out.mp3"
func ProcessExtractAudio ¶
ProcessExtractAudio ffmpeg.ExtractAudio Extract audio track from a video file.
Args:
- inputPath string - Path to the video file
- config map[string]interface{} - Extract configuration (optional)
Config fields:
- format string - Output audio format (default: "mp3")
- output_path string - Output file path (optional, default: temp file)
- bitrate string - Audio bitrate (e.g. "128k") (optional)
- sample_rate int - Audio sample rate (e.g. 16000) (optional)
Returns: string - Path to the extracted audio file
Note: If output_path is not specified, files are created in OS temp directory. TS scripts without "system" fs access MUST provide output_path explicitly.
Usage:
var audioPath = Process("ffmpeg.ExtractAudio", "/path/to/video.mp4", {"format": "mp3"})
// Returns: "/tmp/audio.mp3"
func ProcessInfo ¶
ProcessInfo ffmpeg.Info Get media file information including duration, dimensions, codecs, and file size.
Args:
- filePath string - Path to the media file
Returns: *MediaInfo - Media file information
Usage:
var info = Process("ffmpeg.Info", "/path/to/video.mp4")
// Returns: {"duration": 120.5, "width": 1920, "height": 1080, "audio_codec": "aac", ...}
Types ¶
type BatchJob ¶
type BatchJob struct {
ID string `json:"id"` // Unique job identifier
Type string `json:"type"` // Job type (convert, extract)
Options interface{} `json:"options"` // Job options (ConvertOptions or ExtractOptions)
Status string `json:"status"` // Current job status
Error string `json:"error"` // Error message if job failed
}
BatchJob represents a single job in the batch processing queue. It contains the job metadata and processing options.
type ChunkInfo ¶
type ChunkInfo struct {
Index int `json:"index"` // Chunk index (0-based)
StartTime float64 `json:"start_time"` // Start time in seconds
EndTime float64 `json:"end_time"` // End time in seconds
Duration float64 `json:"duration"` // Duration in seconds
FilePath string `json:"file_path"` // Path to the chunk file
FileSize int64 `json:"file_size"` // File size in bytes
IsSilence bool `json:"is_silence"` // Whether this chunk was created due to silence detection
}
ChunkInfo contains information about a generated chunk
type ChunkOptions ¶
type ChunkOptions struct {
Input string `json:"input"` // Input file path
OutputDir string `json:"output_dir"` // Output directory for chunks
OutputPrefix string `json:"output_prefix"` // Prefix for output chunk files
ChunkDuration float64 `json:"chunk_duration"` // Chunk duration in seconds
SilenceThreshold float64 `json:"silence_threshold"` // Silence threshold in dB (e.g., -40)
SilenceMinLength float64 `json:"silence_min_length"` // Minimum silence length in seconds to trigger a split
Format string `json:"format"` // Output format (wav, mp3, mp4, etc.)
OverlapDuration float64 `json:"overlap_duration"` // Overlap between chunks in seconds
EnableSilenceDetection bool `json:"enable_silence_detection"` // Whether to use silence detection for chunking
MaxChunkSize int64 `json:"max_chunk_size"` // Maximum chunk size in bytes (0 means no limit)
Options map[string]string `json:"options"` // Additional FFmpeg command line options
OnProgress ProgressCallback `json:"-"` // Progress callback function
}
ChunkOptions contains all the options for audio/video chunking operations. It specifies input file, output directory, and chunking parameters.
type ChunkResult ¶
type ChunkResult struct {
Chunks []ChunkInfo `json:"chunks"` // List of generated chunks
TotalChunks int `json:"total_chunks"` // Total number of chunks created
TotalSize int64 `json:"total_size"` // Total size of all chunks in bytes
OutputDir string `json:"output_dir"` // Output directory path
}
ChunkResult contains the results of a chunking operation
type Config ¶
type Config struct {
// Command paths
FFmpegPath string `json:"ffmpeg_path"` // Path to the FFmpeg executable
FFprobePath string `json:"ffprobe_path"` // Path to the FFprobe executable
// Working directory
WorkDir string `json:"work_dir"` // Directory where FFmpeg operations are performed
// Concurrency settings
MaxProcesses int `json:"max_processes"` // Maximum number of concurrent FFmpeg processes
MaxThreads int `json:"max_threads"` // Maximum number of threads per FFmpeg process
// Process limits
MaxProcessTime time.Duration `json:"max_process_time"` // Maximum execution time per process (0 means no limit)
// GPU settings
EnableGPU bool `json:"enable_gpu"` // Whether to enable GPU acceleration
GPUIndex int `json:"gpu_index"` // GPU index to use (-1 means auto detect)
}
Config represents the configuration settings for FFmpeg wrapper. It contains all the necessary settings for FFmpeg operation including paths, concurrency limits, GPU settings, and process management options.
type ConvertOptions ¶
type ConvertOptions struct {
Input string `json:"input"` // Input file path
Output string `json:"output"` // Output file path
Format string `json:"format"` // Output format (wav, mp3, mp4, etc.)
Quality string `json:"quality"` // Quality setting for the output
Options map[string]string `json:"options"` // Additional FFmpeg command line options
Stream bool `json:"stream"` // Whether to support streaming
OnProgress ProgressCallback `json:"-"` // Progress callback function
}
ConvertOptions contains all the options for media conversion operations. It specifies input/output files, format settings, and processing options.
type DarwinFFmpeg ¶
type DarwinFFmpeg struct {
// contains filtered or unexported fields
}
DarwinFFmpeg represents the macOS-specific implementation of FFmpeg wrapper. It provides full FFmpeg functionality with VideoToolbox hardware acceleration support.
func (*DarwinFFmpeg) AddJob ¶
func (f *DarwinFFmpeg) AddJob(job BatchJob) string
AddJob adds a new job to the processing queue and returns the job ID. Generates a unique job ID if not provided and sets initial status to pending.
func (*DarwinFFmpeg) CancelJob ¶
func (f *DarwinFFmpeg) CancelJob(id string) error
CancelJob cancels a running or queued job by its ID. If the job is currently running, attempts to terminate the associated process.
func (*DarwinFFmpeg) ChunkAudio ¶
func (f *DarwinFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkAudio chunks audio file with optional silence detection
func (*DarwinFFmpeg) ChunkVideo ¶
func (f *DarwinFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkVideo chunks video file with optional silence detection
func (*DarwinFFmpeg) Close ¶
func (f *DarwinFFmpeg) Close() error
Close cleans up resources and closes the FFmpeg wrapper. Terminates all active processes and performs cleanup operations.
func (*DarwinFFmpeg) Convert ¶
func (f *DarwinFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
Convert performs media file conversion using the specified options. Supports VideoToolbox hardware acceleration on macOS with Apple Silicon and Intel Macs.
func (*DarwinFFmpeg) ConvertBatch ¶
func (f *DarwinFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
ConvertBatch performs batch conversion of multiple media files. Processes each conversion job sequentially with proper error handling.
func (*DarwinFFmpeg) Extract ¶
func (f *DarwinFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
Extract extracts media content (audio or keyframes) from input files. Supports audio extraction and keyframe extraction with configurable output formats.
func (*DarwinFFmpeg) ExtractBatch ¶
func (f *DarwinFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
ExtractBatch performs batch extraction from multiple media files. Processes each extraction job sequentially with proper error handling.
func (*DarwinFFmpeg) GetActiveProcesses ¶
func (f *DarwinFFmpeg) GetActiveProcesses() int
GetActiveProcesses returns the number of currently active FFmpeg processes. Used for process limit enforcement and monitoring.
func (*DarwinFFmpeg) GetConfig ¶
func (f *DarwinFFmpeg) GetConfig() Config
GetConfig returns the current configuration of the macOS FFmpeg instance.
func (*DarwinFFmpeg) GetJob ¶
func (f *DarwinFFmpeg) GetJob(id string) (BatchJob, error)
GetJob retrieves a job by its ID from the processing queue. Returns an error if the job with the specified ID is not found.
func (*DarwinFFmpeg) GetMediaInfo ¶
GetMediaInfo gets comprehensive information about a media file
func (*DarwinFFmpeg) GetSystemInfo ¶
func (f *DarwinFFmpeg) GetSystemInfo() (SystemInfo, error)
GetSystemInfo retrieves system information including OS, FFmpeg version, and available GPUs. Detects Apple Silicon GPUs and AMD/Intel graphics cards available on macOS.
func (*DarwinFFmpeg) Init ¶
func (f *DarwinFFmpeg) Init(config Config) error
Init initializes the macOS FFmpeg wrapper with the provided configuration. Automatically detects common FFmpeg installation paths on macOS and sets default values.
func (*DarwinFFmpeg) KillAllProcesses ¶
func (f *DarwinFFmpeg) KillAllProcesses() error
KillAllProcesses terminates all active FFmpeg processes. Forcefully kills all running processes and clears the process map.
func (*DarwinFFmpeg) ListJobs ¶
func (f *DarwinFFmpeg) ListJobs() []BatchJob
ListJobs returns a list of all jobs in the processing queue. Provides a snapshot of all jobs regardless of their current status.
type ExtractOptions ¶
type ExtractOptions struct {
Input string `json:"input"` // Input file path
Output string `json:"output"` // Output file path
Type string `json:"type"` // Type of extraction (audio, keyframe)
Format string `json:"format"` // Output format
Options map[string]string `json:"options"` // Additional FFmpeg options
Stream bool `json:"stream"` // Whether to support streaming
OnProgress ProgressCallback `json:"-"` // Progress callback function
}
ExtractOptions contains all the options for media extraction operations. It specifies what type of content to extract and how to process it.
type FFmpeg ¶
type FFmpeg interface {
// Initialize and configuration
Init(config Config) error // Initialize the FFmpeg wrapper with configuration
GetConfig() Config // Get the current configuration
GetSystemInfo() (SystemInfo, error) // Get system information and capabilities
// Media information
GetMediaInfo(ctx context.Context, inputFile string) (*MediaInfo, error) // Get media file information
// Single operations
Convert(ctx context.Context, options ConvertOptions) error // Convert a single media file
Extract(ctx context.Context, options ExtractOptions) error // Extract content from a single media file
// Chunking operations
ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error) // Chunk audio file with silence detection
ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error) // Chunk video file with silence detection
// Batch operations
ConvertBatch(ctx context.Context, jobs []ConvertOptions) error // Convert multiple media files
ExtractBatch(ctx context.Context, jobs []ExtractOptions) error // Extract from multiple media files
// Job management
AddJob(job BatchJob) string // Add a job to the processing queue
GetJob(id string) (BatchJob, error) // Get job status by ID
CancelJob(id string) error // Cancel a job by ID
ListJobs() []BatchJob // List all jobs in the queue
// Process management
GetActiveProcesses() int // Get the number of active processes
KillAllProcesses() error // Kill all active processes
// Cleanup
Close() error // Close and cleanup resources
}
FFmpeg defines the interface for all FFmpeg wrapper implementations. It provides a unified API for media processing operations across different platforms.
func NewDarwinFFmpeg ¶
func NewDarwinFFmpeg() FFmpeg
NewDarwinFFmpeg creates and returns a new macOS FFmpeg instance. Initializes the internal maps for process and job management.
func NewFFmpeg ¶
func NewFFmpeg() FFmpeg
NewFFmpeg creates a new FFmpeg instance based on the current operating system
func NewLinuxFFmpeg ¶
func NewLinuxFFmpeg() FFmpeg
NewLinuxFFmpeg creates and returns a new Linux FFmpeg instance. Initializes the internal maps for process and job management.
func NewWindowsFFmpeg ¶
func NewWindowsFFmpeg() FFmpeg
NewWindowsFFmpeg creates and returns a new Windows FFmpeg instance.
type LinuxFFmpeg ¶
type LinuxFFmpeg struct {
// contains filtered or unexported fields
}
LinuxFFmpeg represents the Linux-specific implementation of FFmpeg wrapper. It provides full FFmpeg functionality with NVIDIA GPU support detection.
func (*LinuxFFmpeg) AddJob ¶
func (f *LinuxFFmpeg) AddJob(job BatchJob) string
AddJob adds a new job to the processing queue and returns the job ID. Generates a unique job ID if not provided and sets initial status to pending.
func (*LinuxFFmpeg) CancelJob ¶
func (f *LinuxFFmpeg) CancelJob(id string) error
CancelJob cancels a running or queued job by its ID. If the job is currently running, attempts to terminate the associated process.
func (*LinuxFFmpeg) ChunkAudio ¶
func (f *LinuxFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkAudio chunks audio file with optional silence detection
func (*LinuxFFmpeg) ChunkVideo ¶
func (f *LinuxFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkVideo chunks video file with optional silence detection
func (*LinuxFFmpeg) Close ¶
func (f *LinuxFFmpeg) Close() error
Close cleans up resources and closes the FFmpeg wrapper. Terminates all active processes and performs cleanup operations.
func (*LinuxFFmpeg) Convert ¶
func (f *LinuxFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
Convert performs media file conversion using the specified options. Supports multi-threading, GPU acceleration, and progress monitoring.
func (*LinuxFFmpeg) ConvertBatch ¶
func (f *LinuxFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
ConvertBatch performs batch conversion of multiple media files. Processes each conversion job sequentially with proper error handling.
func (*LinuxFFmpeg) Extract ¶
func (f *LinuxFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
Extract extracts media content (audio or keyframes) from input files. Supports audio extraction and keyframe extraction with configurable output formats.
func (*LinuxFFmpeg) ExtractBatch ¶
func (f *LinuxFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
ExtractBatch performs batch extraction from multiple media files. Processes each extraction job sequentially with proper error handling.
func (*LinuxFFmpeg) GetActiveProcesses ¶
func (f *LinuxFFmpeg) GetActiveProcesses() int
GetActiveProcesses returns the number of currently active FFmpeg processes. Used for process limit enforcement and monitoring.
func (*LinuxFFmpeg) GetConfig ¶
func (f *LinuxFFmpeg) GetConfig() Config
GetConfig returns the current configuration of the Linux FFmpeg instance.
func (*LinuxFFmpeg) GetJob ¶
func (f *LinuxFFmpeg) GetJob(id string) (BatchJob, error)
GetJob retrieves a job by its ID from the processing queue. Returns an error if the job with the specified ID is not found.
func (*LinuxFFmpeg) GetMediaInfo ¶
GetMediaInfo gets comprehensive information about a media file
func (*LinuxFFmpeg) GetSystemInfo ¶
func (f *LinuxFFmpeg) GetSystemInfo() (SystemInfo, error)
GetSystemInfo retrieves system information including OS, FFmpeg version, and available GPUs. Detects NVIDIA and AMD GPUs available on the Linux system.
func (*LinuxFFmpeg) Init ¶
func (f *LinuxFFmpeg) Init(config Config) error
Init initializes the Linux FFmpeg wrapper with the provided configuration. Sets default values for unspecified configuration options and verifies command availability.
func (*LinuxFFmpeg) KillAllProcesses ¶
func (f *LinuxFFmpeg) KillAllProcesses() error
KillAllProcesses terminates all active FFmpeg processes. Forcefully kills all running processes and clears the process map.
func (*LinuxFFmpeg) ListJobs ¶
func (f *LinuxFFmpeg) ListJobs() []BatchJob
ListJobs returns a list of all jobs in the processing queue. Provides a snapshot of all jobs regardless of their current status.
type MediaInfo ¶
type MediaInfo struct {
Duration float64 `json:"duration"` // Duration in seconds
Width int `json:"width"` // Video width in pixels
Height int `json:"height"` // Video height in pixels
Bitrate string `json:"bitrate"` // Bitrate
FrameRate float64 `json:"frame_rate"` // Frame rate (fps)
AudioCodec string `json:"audio_codec"` // Audio codec
VideoCodec string `json:"video_codec"` // Video codec
FileSize int64 `json:"file_size"` // File size in bytes
}
MediaInfo contains information about a media file
type ProgressCallback ¶
type ProgressCallback func(info ProgressInfo)
ProgressCallback defines the function signature for progress monitoring callbacks. It receives ProgressInfo updates during FFmpeg operations.
type ProgressInfo ¶
type ProgressInfo struct {
Duration time.Duration `json:"duration"` // Total duration of the media file
CurrentTime time.Duration `json:"current_time"` // Current processing time position
Progress float64 `json:"progress"` // Progress percentage (0.0 - 1.0)
Speed float64 `json:"speed"` // Processing speed multiplier
Bitrate string `json:"bitrate"` // Current bitrate
FPS float64 `json:"fps"` // Frames per second
}
ProgressInfo contains real-time progress information for FFmpeg operations. It provides detailed information about the current state of media processing.
type SilencePeriod ¶
type SilencePeriod struct {
Start float64 `json:"start"` // Start time in seconds
End float64 `json:"end"` // End time in seconds
}
SilencePeriod represents a detected silence period in audio
type SystemInfo ¶
type SystemInfo struct {
OS string `json:"os"` // Operating system name
GPUs []string `json:"gpus"` // List of available GPUs
FFmpeg string `json:"ffmpeg_version"` // FFmpeg version string
FFprobe string `json:"ffprobe_version"` // FFprobe version string
}
SystemInfo contains information about the system and available FFmpeg tools. It provides details about the operating system, FFmpeg versions, and hardware capabilities.
type ToolStatus ¶
type ToolStatus struct {
Name string `json:"name"` // Tool name (e.g. "ffmpeg", "ffprobe")
Available bool `json:"available"` // Whether the tool is available
Path string `json:"path,omitempty"` // Resolved executable path
Version string `json:"version,omitempty"` // Version string (first line of -version output)
EnvVar string `json:"env_var,omitempty"` // Environment variable name for custom path
Error string `json:"error,omitempty"` // Error message if not available
}
ToolStatus represents the availability status of an external tool. Used by Inspect() to report tool detection results.
type WindowsFFmpeg ¶
type WindowsFFmpeg struct {
// contains filtered or unexported fields
}
WindowsFFmpeg represents the Windows-specific implementation of FFmpeg wrapper.
func (*WindowsFFmpeg) AddJob ¶
func (f *WindowsFFmpeg) AddJob(job BatchJob) string
AddJob adds a new job to the processing queue.
func (*WindowsFFmpeg) CancelJob ¶
func (f *WindowsFFmpeg) CancelJob(id string) error
CancelJob cancels a job by ID.
func (*WindowsFFmpeg) ChunkAudio ¶
func (f *WindowsFFmpeg) ChunkAudio(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkAudio chunks audio file with optional silence detection.
func (*WindowsFFmpeg) ChunkVideo ¶
func (f *WindowsFFmpeg) ChunkVideo(ctx context.Context, options ChunkOptions) (*ChunkResult, error)
ChunkVideo chunks video file with optional silence detection.
func (*WindowsFFmpeg) Convert ¶
func (f *WindowsFFmpeg) Convert(ctx context.Context, options ConvertOptions) error
Convert performs media file conversion.
func (*WindowsFFmpeg) ConvertBatch ¶
func (f *WindowsFFmpeg) ConvertBatch(ctx context.Context, jobs []ConvertOptions) error
ConvertBatch performs batch conversion.
func (*WindowsFFmpeg) Extract ¶
func (f *WindowsFFmpeg) Extract(ctx context.Context, options ExtractOptions) error
Extract extracts media content from input files.
func (*WindowsFFmpeg) ExtractBatch ¶
func (f *WindowsFFmpeg) ExtractBatch(ctx context.Context, jobs []ExtractOptions) error
ExtractBatch performs batch extraction.
func (*WindowsFFmpeg) GetActiveProcesses ¶
func (f *WindowsFFmpeg) GetActiveProcesses() int
GetActiveProcesses returns the number of active processes.
func (*WindowsFFmpeg) GetConfig ¶
func (f *WindowsFFmpeg) GetConfig() Config
GetConfig returns the current configuration.
func (*WindowsFFmpeg) GetJob ¶
func (f *WindowsFFmpeg) GetJob(id string) (BatchJob, error)
GetJob retrieves a job by ID.
func (*WindowsFFmpeg) GetMediaInfo ¶
GetMediaInfo gets comprehensive information about a media file.
func (*WindowsFFmpeg) GetSystemInfo ¶
func (f *WindowsFFmpeg) GetSystemInfo() (SystemInfo, error)
GetSystemInfo retrieves system information including OS and FFmpeg version.
func (*WindowsFFmpeg) Init ¶
func (f *WindowsFFmpeg) Init(config Config) error
Init initializes the Windows FFmpeg wrapper with the provided configuration.
func (*WindowsFFmpeg) KillAllProcesses ¶
func (f *WindowsFFmpeg) KillAllProcesses() error
KillAllProcesses terminates all active processes.
func (*WindowsFFmpeg) ListJobs ¶
func (f *WindowsFFmpeg) ListJobs() []BatchJob
ListJobs returns all jobs.