6月4日 13:47

How to use FFmpeg for audio processing? What are the common audio filters?

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.

标签:FFmpeg