A fluent API to FFMPEG for audio and video manipulation with chainable methods
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Complete audio manipulation capabilities including codecs, bitrates, channels, filters, and quality settings.
Set the audio codec for output streams.
/**
* Set audio codec for output
* @param codec - Audio codec name
* @returns FfmpegCommand instance for chaining
*/
audioCodec(codec) // → FfmpegCommand
// Aliases: withAudioCodecUsage Examples:
// Common audio codecs
ffmpeg('input.wav').audioCodec('libmp3lame').save('output.mp3');
ffmpeg('input.flac').audioCodec('aac').save('output.m4a');
ffmpeg('input.mp3').audioCodec('pcm_s16le').save('output.wav');
// High-quality audio encoding
ffmpeg('input.wav')
.audioCodec('libvorbis')
.audioBitrate('320k')
.save('output.ogg');Configure audio bitrate for compressed output.
/**
* Set audio bitrate
* @param bitrate - Bitrate in kbps (with optional 'k' suffix)
* @returns FfmpegCommand instance for chaining
*/
audioBitrate(bitrate) // → FfmpegCommand
// Aliases: withAudioBitrateUsage Examples:
// Standard bitrates
ffmpeg('input.wav').audioBitrate('128k').save('output.mp3');
ffmpeg('input.flac').audioBitrate(320).save('high_quality.mp3');
// Variable bitrate with quality
ffmpeg('input.wav')
.audioCodec('libmp3lame')
.audioBitrate('256k')
.audioQuality(2) // VBR quality
.save('output.mp3');Set the number of audio channels.
/**
* Set number of audio channels
* @param channels - Number of audio channels (1=mono, 2=stereo, etc.)
* @returns FfmpegCommand instance for chaining
*/
audioChannels(channels) // → FfmpegCommand
// Aliases: withAudioChannelsUsage Examples:
// Convert stereo to mono
ffmpeg('stereo.wav').audioChannels(1).save('mono.wav');
// Convert to stereo
ffmpeg('mono.wav').audioChannels(2).save('stereo.wav');
// 5.1 surround sound
ffmpeg('multichannel.wav').audioChannels(6).save('surround.wav');Configure audio sampling frequency.
/**
* Set audio sample rate
* @param freq - Frequency in Hz (e.g., 44100, 48000)
* @returns FfmpegCommand instance for chaining
*/
audioFrequency(freq) // → FfmpegCommand
// Aliases: withAudioFrequencyUsage Examples:
// Standard sample rates
ffmpeg('input.wav').audioFrequency(44100).save('cd_quality.wav');
ffmpeg('input.wav').audioFrequency(48000).save('pro_audio.wav');
// Downsampling for smaller files
ffmpeg('high_res.wav')
.audioFrequency(22050)
.audioBitrate('96k')
.save('compressed.mp3');Set audio quality factor for variable bitrate encoding.
/**
* Set audio quality factor (codec-specific)
* @param quality - Quality factor (codec-dependent scale)
* @returns FfmpegCommand instance for chaining
*/
audioQuality(quality) // → FfmpegCommand
// Aliases: withAudioQualityUsage Examples:
// MP3 VBR quality (0=best, 9=worst)
ffmpeg('input.wav')
.audioCodec('libmp3lame')
.audioQuality(2) // High quality VBR
.save('vbr.mp3');
// AAC quality
ffmpeg('input.wav')
.audioCodec('aac')
.audioQuality(1) // High quality
.save('output.m4a');Disable audio in output (video-only output).
/**
* Remove audio from output
* @returns FfmpegCommand instance for chaining
*/
noAudio() // → FfmpegCommand
// Aliases: withNoAudioUsage Example:
// Create video-only file
ffmpeg('movie_with_sound.mp4')
.noAudio()
.videoCodec('libx264')
.save('silent_movie.mp4');Apply audio filters for processing and effects.
/**
* Apply audio filters
* @param filters - Filter specifications (string, array, or objects)
* @returns FfmpegCommand instance for chaining
*/
audioFilters(...filters) // → FfmpegCommand
// Aliases: withAudioFilter, withAudioFilters, audioFilterUsage Examples:
// Volume adjustment
ffmpeg('input.mp3')
.audioFilters('volume=0.5') // Reduce volume by half
.save('quieter.mp3');
// Multiple filters
ffmpeg('input.wav')
.audioFilters([
'highpass=f=200', // High-pass filter at 200Hz
'lowpass=f=8000', // Low-pass filter at 8kHz
'volume=1.5' // Increase volume
])
.save('filtered.wav');
// Object-style filters
ffmpeg('input.mp3')
.audioFilters([
{ filter: 'equalizer', options: 'f=1000:width_type=h:width=200:g=5' },
{ filter: 'compand', options: 'attacks=0.3:decays=0.8:points=-80/-80|-45/-15|-27/-9|0/-7|20/-7' }
])
.save('processed.mp3');
// Fade effects
ffmpeg('input.wav')
.audioFilters([
'afade=t=in:ss=0:d=3', // Fade in for 3 seconds
'afade=t=out:st=57:d=3' // Fade out starting at 57s for 3s
])
.save('with_fades.wav');/**
* Select specific audio stream using map
* @param spec - Stream specification (e.g., '0:a:0' for first audio stream)
* @returns FfmpegCommand instance for chaining
*/
map(spec) // → FfmpegCommandUsage Examples:
// Select second audio track
ffmpeg('movie.mkv')
.map('0:v:0') // First video stream
.map('0:a:1') // Second audio stream
.save('different_audio.mp4');
// Audio-only extraction
ffmpeg('video.mp4')
.map('0:a') // All audio streams
.noVideo()
.save('audio_only.mp3');/**
* Add audio delay using output options
* @param options - Array of FFmpeg options
* @returns FfmpegCommand instance for chaining
*/
outputOptions(...options) // → FfmpegCommandUsage Example:
// Delay audio by 500ms
ffmpeg('video.mp4')
.outputOptions(['-itsoffset', '0.5'])
.map('0:v')
.map('0:a')
.save('audio_delayed.mp4');/**
* Common audio codec names
*/
type AudioCodec =
| 'libmp3lame' // MP3 encoding
| 'aac' // AAC encoding (built-in)
| 'libfdk_aac' // High-quality AAC (external)
| 'libvorbis' // Vorbis/OGG encoding
| 'libopus' // Opus encoding
| 'flac' // FLAC lossless
| 'pcm_s16le' // PCM 16-bit little-endian
| 'pcm_s24le' // PCM 24-bit little-endian
| 'pcm_f32le' // PCM 32-bit float
| 'ac3' // AC-3 (Dolby Digital)
| 'dts' // DTS
| string; // Any FFmpeg audio codec
/**
* Audio bitrate specification
*/
type AudioBitrate = number | string; // kbps as number or with 'k' suffix
/**
* Standard audio sample rates
*/
type AudioSampleRate =
| 8000 | 11025 | 16000 | 22050 // Low quality/telephony
| 32000 | 44100 | 48000 // Standard quality
| 88200 | 96000 | 176400 | 192000 // High resolution
| number; // Any valid sample rate
/**
* Audio filter specification
*/
type AudioFilter =
| string // Filter string 'filter=param:value'
| { // Filter object
filter: string; // Filter name
options?: string | Object; // Filter parameters
inputs?: string[]; // Input streams (complex filters)
outputs?: string[]; // Output streams (complex filters)
};