FFmpeg provides powerful audio processing capabilities, including audio extraction, conversion, mixing, noise reduction, and various other operations.
Audio Extraction and Conversion
Extract Audio from Video
bash# Extract audio stream (no re-encoding) ffmpeg -i video.mp4 -vn -acodec copy audio.aac # Extract and convert to MP3 ffmpeg -i video.mp4 -vn -acodec libmp3lame -ab 192k audio.mp3 # Extract and convert to WAV ffmpeg -i video.mp4 -vn audio.wav
Audio Format Conversion
bash# MP3 to AAC ffmpeg -i input.mp3 -c:a aac -b:a 128k output.aac # WAV to MP3 ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 # FLAC to MP3 (lossy compression) ffmpeg -i input.flac -c:a libmp3lame -b:a 320k output.mp3
Audio Parameter Adjustment
Adjust Volume
bash# Increase volume (2x) ffmpeg -i input.mp3 -af "volume=2.0" output.mp3 # Decrease volume (0.5x) ffmpeg -i input.mp3 -af "volume=0.5" output.mp3 # Adjust using decibels ffmpeg -i input.mp3 -af "volume=3dB" output.mp3 # Normalize volume ffmpeg -i input.mp3 -af "loudnorm" output.mp3
Adjust Sample Rate
bash# Convert to 44.1kHz ffmpeg -i input.wav -ar 44100 output.wav # Convert to 48kHz ffmpeg -i input.wav -ar 48000 output.wav # Convert to 16kHz (common for speech recognition) ffmpeg -i input.wav -ar 16000 output.wav
Adjust Channels
bash# Convert to mono ffmpeg -i input.mp3 -ac 1 output.mp3 # Convert to stereo ffmpeg -i input.mp3 -ac 2 output.mp3 # Extract left channel ffmpeg -i input.mp3 -af "pan=mono|c0=c0" output.mp3 # Extract right channel ffmpeg -i input.mp3 -af "pan=mono|c0=c1" output.mp3
Audio Editing
Clip by Time
bash# Start from 10 seconds, clip 30 seconds ffmpeg -i input.mp3 -ss 00:00:10 -t 00:00:30 output.mp3 # Start from 1 minute, clip to 3 minutes ffmpeg -i input.mp3 -ss 00:01:00 -to 00:03:00 output.mp3 # Clip first 60 seconds ffmpeg -i input.mp3 -t 60 output.mp3
Audio Concatenation
bash# Concatenate using concat protocol echo "file 'part1.mp3'" > filelist.txt echo "file 'part2.mp3'" >> filelist.txt echo "file 'part3.mp3'" >> filelist.txt ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp3 # Concatenate using concat filter ffmpeg -i part1.mp3 -i part2.mp3 -i part3.mp3 \ -filter_complex "[0:a][1:a][2:a]concat=n=3:v=0:a=1[outa]" \ -map "[outa]" output.mp3
Audio Effects
Fade In/Out
bash# Fade in for 3 seconds ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3" output.mp3 # Fade out for 3 seconds ffmpeg -i input.mp3 -af "afade=t=out:st=5:d=3" output.mp3 # Fade in and out ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3,afade=t=out:st=7:d=3" output.mp3
Audio Mixing
bash# Mix two audio files ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "amix=inputs=2:duration=first" output.mp3 # Mix three audio files ffmpeg -i audio1.mp3 -i audio2.mp3 -i audio3.mp3 \ -filter_complex "amix=inputs=3:duration=longest" output.mp3 # Adjust mixing ratio ffmpeg -i audio1.mp3 -i audio2.mp3 \ -filter_complex "[0:a]volume=0.7[a0];[1:a]volume=0.3[a1];[a0][a1]amix=inputs=2" output.mp3
Audio Delay
bash# Delay audio by 500 milliseconds ffmpeg -i input.mp3 -af "adelay=500|500" output.mp3 # Different delay for left and right channels ffmpeg -i input.mp3 -af "adelay=500|1000" output.mp3 # Advance audio (negative delay) ffmpeg -i input.mp3 -af "adelay=-200|-200" output.mp3
Audio Noise Reduction
bash# Remove low frequency noise using highpass filter ffmpeg -i input.mp3 -af "highpass=f=200" output.mp3 # Remove high frequency noise using lowpass filter ffmpeg -i input.mp3 -af "lowpass=f=3000" output.mp3 # Use bandpass filter ffmpeg -i input.mp3 -af "bandpass=f=1000:width_type=h:width=500" output.mp3
Audio Analysis and Processing
Audio Visualization
bash# Generate audio waveform ffmpeg -i input.mp3 -filter_complex "showwavespic=s=640x320" waveform.png # Generate spectrogram ffmpeg -i input.mp3 -lavfi showspectrumpic=s=640x320 spectrum.png # Generate audio video ffmpeg -i input.mp3 -filter_complex "showwaves=s=640x320" output.mp4
View Audio Information
bash# View detailed audio information ffmpeg -i input.mp3 -hide_banner # View audio sample rate, bitrate, etc. ffprobe -i input.mp3 -show_streams -select_streams a # Analyze audio volume ffmpeg -i input.mp3 -af "volumedetect" -f null -
Advanced Audio Processing
Audio Speed Change
bash# Speed up 1.5x ffmpeg -i input.mp3 -filter:a "atempo=1.5" output.mp3 # Slow down 0.75x ffmpeg -i input.mp3 -filter:a "atempo=0.75" output.mp3 # Large speed change (requires multiple atempo) ffmpeg -i input.mp3 -filter:a "atempo=2.0,atempo=2.0" output.mp3
Audio Pitch Change
bash# Increase pitch (semitone) ffmpeg -i input.mp3 -filter:a "asetrate=44100*1.05946" output.mp3 # Decrease pitch (semitone) ffmpeg -i input.mp3 -filter:a "asetrate=44100*0.94387" output.mp4
Audio Echo
bash# Add echo effect ffmpeg -i input.mp3 -af "aecho=0.8:0.9:1000:0.3" output.mp3
Audio Encoding Parameters
Common Audio Encoders
bash# AAC encoding ffmpeg -i input.wav -c:a aac -b:a 128k output.aac # MP3 encoding ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 # Opus encoding (high quality) ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus # FLAC encoding (lossless) ffmpeg -i input.wav -c:a flac output.flac
Audio Quality Settings
bash# High quality MP3 (320kbps) ffmpeg -i input.wav -c:a libmp3lame -b:a 320k output.mp3 # Medium quality MP3 (192kbps) ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 # Low quality MP3 (128kbps) ffmpeg -i input.wav -c:a libmp3lame -b:a 128k output.mp3 # VBR encoding (variable bitrate) ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
When processing audio, it is recommended to use lossless formats (such as WAV, FLAC) for intermediate processing, and finally convert to lossy formats to reduce quality loss.