If a file you converted with FFmpeg plays without sound, there are several possible causes. Check the output with ffprobe first (it comes with FFmpeg and shows what a file contains), then narrow it down.
Start with ffprobe
ffprobe -i output.mp4
Look at the Stream lines:
Stream #0:0: Video: h264, ...
Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp, 128 kb/s
- No
Audio:line: the file has no audio at all - An
Audio:line but no sound: the problem is the codec or the player
Cause 1: The -an Option Is Set
Symptom
-an removes the audio stream. It often slips in when you copy a command from somewhere else.
# Bad — audio is stripped
ffmpeg -i input.mp4 -an output.mp4
Fix
# Remove -an
ffmpeg -i input.mp4 output.mp4
# Or specify an audio codec explicitly
ffmpeg -i input.mp4 -c:a aac output.mp4
Cause 2: The Input File Has No Audio Stream
Symptom
If the input has no audio, the output has none either.
ffprobe -i input.mp4
# → Stream #0:0: Video: h264, ... (no audio stream listed)
Fix
Add a separate audio file:
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
-shortest— stop when the shorter stream ends
Add a silent audio track (for player compatibility):
ffmpeg -i input.mp4 -f lavfi -i anullsrc=r=44100:cl=stereo \
-c:v copy -c:a aac -shortest output.mp4
Cause 3: The Audio Codec Doesn’t Match the Output Container
Symptom
Some players won’t play certain combinations of container (the file format, such as MP4 or MKV) and audio codec.
# MP4 with Vorbis (not recommended)
ffmpeg -i input.mkv -c:v copy -c:a libvorbis output.mp4
Fix
For MP4, use aac or mp3:
ffmpeg -i input.mkv -c:v copy -c:a aac output.mp4
Recommended audio codecs by container:
| Container | Recommended audio codecs |
|---|---|
| MP4 | AAC (aac), MP3 (libmp3lame) |
| MKV | AAC, MP3, Vorbis or Opus |
| WebM | Vorbis (libvorbis), Opus (libopus) |
| MOV | AAC, PCM |
Cause 4: Sample-Rate Mismatch
Some codecs only support certain sample rates (how many times per second the sound is sampled). If the input uses another rate, FFmpeg converts it by itself, so the output still has sound. For example, 96000 Hz audio encoded with libmp3lame comes out at 48000 Hz. Players and devices can have limits too: Android lists AAC-LC support only for 8 to 48 kHz.
Fix
Set the sample rate with -ar:
ffmpeg -i input.mp4 -c:a aac -ar 44100 output.mp4
The usual rates are 44100 Hz (CD quality) and 48000 Hz (the standard for video).
Cause 5: Stream-Mapping Issues (Multiple Streams)
If the input has several audio streams and you don’t use -map, FFmpeg keeps only one. It prefers a stream marked (default) in ffprobe’s output, then the one with the most channels.
Inspect
ffprobe -i input.mkv
# Stream #0:0: Video
# Stream #0:1: Audio (Japanese)
# Stream #0:2: Audio (English)
Fix
Pick the audio stream you want with -map:
# Use the second audio stream (English)
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -c copy output.mp4
To include every audio stream:
ffmpeg -i input.mkv -map 0:v -map 0:a -c copy output.mp4
Cause 6: Channel Count (Mono vs. Stereo)
Symptom
Some players and devices support only certain channel counts. Android, for example, lists mono, stereo, 5.0 and 5.1 for AAC-LC.
Fix
# Convert to stereo
ffmpeg -i input.mp4 -ac 2 output.mp4
# Convert to mono
ffmpeg -i input.mp4 -ac 1 output.mp4
Debug Commands
# Verbose logging
ffmpeg -v verbose -i input.mp4 output.mp4
# Export audio only for isolated testing
ffmpeg -i input.mp4 -vn test_audio.aac
ffplay test_audio.aac
What to Expect
If a 2-minute MP4 seems to have no sound, first check whether the output file has an audio stream:
ffprobe -v error -select_streams a \
-show_entries stream=index,codec_name,channels,sample_rate,bit_rate \
-of default=nw=1 output.mp4
For normal stereo AAC you see lines such as codec_name=aac, channels=2 and sample_rate=48000. If nothing is printed, the file has no audio stream.
If there is an audio stream but no sound, extract the audio on its own (the last two commands under Debug Commands). That tells you whether the player or the encoding is at fault. A 2-minute AAC track is usually only a few megabytes, and extraction often takes seconds.
Frequently Asked Questions
Why is there no audio after extracting a clip?
Usually the command maps only the video stream, so the audio is left out. Map the audio too, for example -map 0:v:0 -map 0:a:0, then add -c:a copy to copy it or -c:a aac to re-encode it.
AAC plays on phones but not in Premiere — why?
Premiere can import AAC audio in MP4 (see Adobe’s list of supported formats). If the audio still won’t import, re-encode only the audio with FFmpeg’s aac encoder (AAC-LC by default) and try again. ffmpeg -i in.mp4 -c:v copy -c:a aac -b:a 192k out.mp4 does that and leaves the video untouched.
My output has the audio track but it is silent
First check that the input has sound. Run ffmpeg -i in.mp4 -af volumedetect -f null -. If it reports max_volume: -91.0 dB, the source is silent or too quiet to hear. If the input has sound, FFmpeg may have picked a silent audio track (see Cause 5).
How do I keep multiple audio tracks?
Use -map 0:v -map 0:a. 0:a with no index selects all audio streams. With -map 0:a alone, the video is left out. Without -map, only one audio stream is kept, with or without -c copy (see Cause 5).
Does compressing video kill the audio?
No. Compressing changes only the video. To be sure the audio is kept, add -c:a copy (or -c:a aac -b:a 128k).
Related Articles
Primary source: ffmpeg.org/ffmpeg.html