If your FFmpeg YouTube livestream has video but no sound, check the input, FFmpeg’s selected and encoded output streams, and YouTube’s ingestion messages in that order. The evidence from your input listing, full command, logs, and Live Control Room health message is needed to identify the cause; changing YouTube settings alone may not address it.
Start by preserving what the current run tells you. Note which file or capture source FFmpeg opened, keep the complete command private, and capture the input and output stream summaries and relevant log lines. A missing input audio stream, an output mapping issue, and an ingestion error can look similar to a viewer, but they point to different checks.
Confirm the input contains an audio stream
Run the usual FFmpeg command with its normal logging visible, or inspect the media file separately with FFmpeg’s probe tools if that is part of your workflow. Look for the Input #... description and its stream lines. Video and audio are listed separately; an input containing video does not necessarily contain an audio stream. A file may have a video stream and no audio, or a capture input may be configured to open a source that carries no sound.
The first question is simply whether an Audio: line appears under the input you intend to use. Record its codec and channel information as evidence, but do not yet assume those values explain the silence. If there is no input audio stream, output mapping cannot manufacture one. Check that the correct file or device was opened, and, for a live capture, inspect the selected device and the source application’s audio routing. These are places to investigate, not conclusions about your setup.
Multiple inputs make this inspection especially important. For example, a command may open a video file first and an audio device second, or use several media files. The number in a later map refers to an input, so the audio stream you want may not belong to input zero. Read every input block, not just the first one, and match each block to the corresponding -i in the complete command.
If the audio stream is present but its content may be silent, distinguish presence from audibility. A stream listing confirms that an audio stream exists; it does not prove that it contains useful signal or that the source is routed as expected. Listen to the source file or capture monitor if available, and keep that check separate from YouTube’s later ingestion. For a broader example of preparing a continuous channel, see how a devotional stream is set up for YouTube.
Inspect the FFmpeg command for disabled audio
Once you have confirmed the input listing, inspect the full command from each -i through the output URL or file. Look for -an, which FFmpeg documents as an output option that disables audio recording. It can suppress audio selection even when the input has a valid audio stream. Because FFmpeg options apply in relation to outputs, inspect their position and the command structure rather than searching for the characters alone.
Also note whether the command uses automatic stream selection or explicit -map options. A command with manual mapping needs to map the intended audio stream as well as video. A map that selects only video can produce a video-only output. A map that points at the wrong input or wrong stream can also fail to select the audio you heard in another source.
Do not remove every option that looks audio-related as a first response. The actual command might have a filtergraph, multiple outputs, or a deliberate audio suppression on a different output. Save a copy of the current command, including quoting and option order, before making a controlled change. Keep the stream key private if you share the command; replace it with a placeholder rather than posting it in a forum or support message.
FFmpeg’s documentation on stream selection and options explains mapping and the behaviour of -an. Use it to verify what an option means in context. If you run a long playlist, the same discipline applies when you change the command: test the revised output before relying on it overnight. The distinctions between a scheduled workflow and a command-line workflow are discussed in OBS and FFmpeg playlist scheduling.
Check output mapping and audio encoding
The output should carry the intended video stream and one intended audio stream. With an input whose first video and first audio streams are the desired ones, a schematic mapping is -map 0:v:0 -map 0:a:0. This is an example, not a drop-in command. In a multi-input command, change the leading input index to the input containing the audio. A filtergraph may also produce streams that need different mapping, so adapt the example to the graph and full command.
A schematic RTMP/RTMPS output fragment might look like this:
ffmpeg -i INPUT -map 0:v:0 -map 0:a:0 -c:v libx264 -c:a aac -ar 44100 -b:a 128k -f flv "rtmps://SERVER/STREAM_KEY"
Replace the placeholders and video settings with values appropriate to the real source and encoder. The audio settings shown reflect YouTube’s recommendations for stereo audio, not a guarantee that they fix every case. Verify the full command has no later output-scoped -an that disables audio, and do not expose the real stream key when copying an example.
For RTMP/RTMPS, YouTube lists AAC or MP3 audio. Its encoder guidance recommends 44.1 kHz and 128 Kbps for stereo; for 5.1 it lists 48 kHz and 384 Kbps, and says 5.1 over RTMP/RTMPS requires AAC. Check YouTube’s current live encoder settings against the channel and the actual Live Control Room message. Do not change channels, sample rate, or bitrate at random: use the reported condition to choose a relevant test.
YouTube’s live error guidance also identifies no audio stream, multiple audio streams, unsupported codec, incorrect sample rate or bitrate, and too many channels among audio-related issues. More streams are not necessarily safer. If the output summary shows two audio streams, confirm whether both are intentional and whether YouTube’s current guidance accepts that configuration. The aim is not to add every possible track, but to deliver the one intended programme mix.
Review FFmpeg logs for audio output
After examining the command, run a short test and read the output summary and progress or final log lines. Look under the output description for an Audio: stream. It should show whether FFmpeg is encoding or copying audio, and the output stream mapping section can help connect an input stream to that output. If the input has audio but the output summary has none, return to -an, -map, input indices, and filtergraph outputs before investigating YouTube.
A log that reports an audio stream is useful evidence, but it is not proof that listeners can hear the programme. The stream might contain silence, the wrong source, or an unsuitable channel mix. If the output has audio but sounds silent in a local playback check, inspect the source level and routing as separate possibilities. The available evidence in a log does not establish which one applies.
Keep the complete log for the same run as the command and input listing. A log from an earlier run may describe a different command or source. Note the time and the exact output you tested, then compare the input stream, selected output mapping, and encoded output. This turns “video works, audio does not” into a sequence of verifiable observations rather than a reason to change several settings together.
Read YouTube stream-health messages
Only after confirming that FFmpeg’s output includes audio should you use YouTube’s ingestion evidence to decide whether the delivery format is the problem. Open the Live Control Room for the test stream and read the health or error message shown for that run. The wording can point towards absent audio, multiple audio streams, codec, sample rate, bitrate, or channel-count issues. Use the message as a clue, not as a diagnosis beyond what it says.
Compare the reported issue with the output summary and YouTube’s current guidance. For example, if the output uses a codec outside the supported RTMP/RTMPS audio choices, test an appropriate supported codec. If the error points to too many channels, confirm the actual output channel layout and the current requirements before changing the source mix. If there is no audio stream at all, a YouTube setting change will not add one to FFmpeg’s outgoing stream.
YouTube recommends testing before an event with audio and movement like the planned stream, checking the Live Control Room preview, and monitoring stream health. A private or unlisted test gives you a way to do this without treating a public broadcast as the first check. See YouTube’s live streaming error messages alongside its encoder settings; check the official pages again when troubleshooting because guidance can change.
An issue may also appear between preview and viewer playback. If the preview has sound but the public or unlisted playback seems silent, compare what you hear in the preview, what the health message reports, and the playback path you are testing. Check on another device or browser if practical, but do not infer that the encoder is faulty merely because one playback check is silent.
Test the result with a local output check
A local check can separate an FFmpeg output problem from a YouTube ingestion or playback problem. If your workflow permits recording or monitoring the encoded output, inspect or listen to that result before or during a short test. Confirm that it contains an audio stream, and listen for the intended content rather than relying only on a stream listing. Not every RTMP workflow saves a local file, so use a monitoring method your setup actually supports.
A local recording that contains the expected sound supports the conclusion that FFmpeg produced audio in that test. It does not establish that YouTube received or accepted it. If local output has sound and YouTube’s preview does not, compare the outgoing stream format and YouTube health message. If the preview has sound and the viewer playback does not, look at the playback test and stream state before altering a working FFmpeg command.
Make one change per test and keep a small record: command version, input, output summary, local listening result if available, and YouTube health message. If you alter mapping and codec at the same time, a successful test will not show which change mattered. A short controlled check is more useful than letting a modified command run unattended and discovering later that it only fixed one of several paths.
This is particularly important for channels that loop recorded material for long periods. The choices around source files and playback continuity are separate from audio diagnosis; the format considerations for a 24/7 video stream may help when preparing the media itself, but they do not replace checking the actual streams in your FFmpeg run.
Narrow down the failing stage
Use the evidence to decide where the next test belongs. These categories are practical branches, not mutually exclusive causes: a setup can have more than one issue, and the exact explanation depends on the input listing, complete command, logs, and YouTube health message together.
| Evidence from the test | Stage to investigate next | Useful next check |
|---|---|---|
No Audio: line under the intended input |
Input audio | Confirm the selected file or capture source and its routing; do not expect mapping to create audio |
| Input audio exists, but output has no audio stream | FFmpeg selection or output | Inspect output-scoped -an, maps, input indices, and filtergraph outputs |
| Output has audio, and Live Control Room reports an audio error | YouTube ingestion | Match the specific message to codec, stream count, channel count, sample rate, or bitrate guidance |
| Output and preview have audio, but tested playback does not | Playback or monitoring | Compare the preview and the playback route on a controlled test before changing encoder settings |
| An audio stream exists but sounds silent | Source or signal path | Listen to the source and supported local monitor; investigate level and routing without assuming a cause |
Start at the earliest failing stage. If the input lacks audio, work upstream at the source. If audio is present at input but absent at output, focus on FFmpeg. If output evidence is sound but YouTube reports an audio error, use that exact health message to guide an ingestion-format test. If both the output and preview are audible, investigate playback separately.
For a channel that depends on a file running continuously, computer sleep, restarts, and overnight monitoring can become a different operational concern from a missing-audio fault. StreamNeo can remove the need to leave your own computer running when the specific pain is keeping an uploaded video broadcasting continuously, but it does not replace checking the source file and YouTube test for audio. Decide first whether you need to repair a particular FFmpeg path or change how the file is kept live.
Before committing, compare the operating options on the pricing page. When the file and channel are ready, start free — 24-hour trial, no card.
FAQ
Why does my FFmpeg YouTube stream have video but no sound?
The audio may be missing at the input, omitted or disabled in FFmpeg’s output, or flagged during YouTube ingestion. Check the input listing, full command and output log, then compare them with the Live Control Room health message before choosing a fix.
Can YouTube settings alone fix missing audio?
Not if FFmpeg’s input has no audio or the outgoing stream does not include an audio track. YouTube settings are relevant when the outgoing audio exists but its format or stream structure conflicts with the current guidance or a reported health error.
What should I check first in the FFmpeg command?
Check whether an output-scoped -an disables audio and whether the output maps the intended audio stream from the correct input. Read the whole command, including filters and output options, rather than copying a mapping fragment without adapting it.
What audio settings does YouTube recommend for stereo over RTMP/RTMPS?
YouTube’s encoder settings page recommends 44.1 kHz and 128 Kbps for stereo audio and lists AAC or MP3 for RTMP/RTMPS. Confirm the current official guidance and any Live Control Room message for your stream before changing settings.