If your FFmpeg YouTube livestream has audio but no picture, first check whether FFmpeg receives a video stream at all. Then trace that video through stream selection, encoding, the local output and YouTube’s preview before changing settings.
The symptom alone does not identify the cause. Without your command, FFmpeg output and Live Control Room health details, treat each possibility below as a check rather than a diagnosis.
1. Confirm that video reaches FFmpeg
Start at the input, not YouTube. In the FFmpeg console output, find the section for each input. It should list stream types and details; check that at least one stream is identified as video, not only audio. Note its index and properties, such as codec, dimensions and frame rate. The exact listing depends on the source and FFmpeg build.
If the input is a file, inspect the file that FFmpeg is actually opening, not a similar file in another folder. If it is a capture device, network feed or generated source, test that source on its own. A disconnected camera, incorrect capture-device selection, inaccessible input URL or audio-only file can leave FFmpeg with sound and no picture to send. None of these is established by the symptom; the input listing is the evidence to look for.
Where practical, make a short local recording or open the source in the encoder’s preview. YouTube’s troubleshooting guidance recommends checking the encoder output and looking for problems in a local archive. If the local result also lacks video, focus on the source before adjusting YouTube settings. If it contains video, continue downstream.
This distinction saves time. A YouTube bitrate change cannot restore a video stream that never reaches FFmpeg, just as replacing a camera will not correct an output mapping that discards video. If you need a known-good file to test separately from a live capture source, the guide to recording a video for free may help you prepare one.
2. Inspect stream selection and mapping
Once the input listing confirms video, inspect the options for the YouTube output. FFmpeg’s -map option controls which input streams are included in an output. With manual mapping, FFmpeg uses the streams you select rather than relying on its automatic selection for that output. The FFmpeg command-line documentation explains stream selection and mapping.
For example, an output mapped with -map 0:a selects audio from input 0; that is an audio-only selection. Likewise, -vn tells FFmpeg not to include video in the output. Search the complete command, including options in scripts, service files or generated command strings, for these flags and for every -map associated with the streaming output. Do not remove an option just because it looks suspicious: it may be there to exclude an unwanted stream deliberately.
Automatic mapping may be sufficient for a simple input, but manual mapping is common when there are multiple audio tracks, multiple video streams or a filtergraph. A command can successfully encode and send audio while omitting the desired picture if its mapping selects only audio, selects the wrong video stream, or does not include a filtered video output.
If a complex filtergraph creates the picture, check its labels and output connections. A labelled filter output generally needs to be mapped by its label; check that the correct video label reaches the streaming output and is not accidentally omitted or mapped to a different output file. The right mapping depends on the actual input indices and filtergraph. Do not copy a universal -map 0:v:0 into a command without confirming that input 0 and its first video stream are the intended source.
Keep a copy of the original command before editing. If the source has several tracks, record which input index is the intended picture and which audio track is intended. This makes it easier to explain a change and to reverse it if the output gets worse.
3. Check encoding and output format
A selected video stream still needs to be encoded and packaged in a format YouTube can ingest. Review the output options after mapping: look for a video codec option, output format or protocol, bitrate mode, frame rate and keyframe interval. A command may have valid audio options while the video settings are missing, invalid for the installed FFmpeg build, or incompatible with the ingest path in use.
YouTube’s encoder settings guidance lists H.264, H.265/HEVC and AV1 video for RTMP/RTMPS, and AAC or MP3 audio. It recommends constant bitrate encoding, a keyframe interval of two seconds (not exceeding four seconds), and progressive scan with square pixels; it lists frame rates up to 60 fps. Check YouTube’s current guidance for the protocol and ingest mode you are using rather than assuming every listed choice applies to every path.
FFmpeg’s available encoders depend on how it was built. A codec name in a copied command is not proof that the installed build supports that encoder or that it has been selected. Check FFmpeg’s startup and output logs for the encoder actually in use and for errors. Avoid changing codec, frame rate, bitrate and keyframe settings together: if the picture appears afterwards, you will not know which change mattered, and a second incompatible setting may remain hidden.
Also check that the output is being written as a suitable live stream rather than to an unintended local destination. Audio reaching YouTube suggests some part of the output path is working, but it does not prove the video stream was encoded or muxed correctly. Use the output log and, if possible, a short local recording made with the same relevant video options to establish whether the resulting file or stream contains picture.
4. Verify YouTube ingest and the Live Control Room preview
If a local output shows video but YouTube’s preview does not, the fault is further along the chain. Check the destination URL and stream key against the active stream in YouTube Live Control Room. Confirm that the key belongs to the intended event, not another scheduled stream. YouTube’s setup instructions describe entering the stream details in an encoder and waiting for the preview. Never include a full stream key in a public log or support request; redact it before sharing a command.
Read the Live Control Room’s stream-health messages rather than inferring a cause from audio alone. YouTube’s error guidance covers stream issues including unsupported codecs and incorrect video settings. A warning can narrow the search, but confirm it against your output options and FFmpeg logs. A clean preview at one point also does not prove the stream will remain healthy during a longer broadcast.
For a safe test, use an unlisted stream or another non-public test arrangement available in your channel. Start the encoder and wait for video to appear in the Live Control Room preview before making the stream public. If the preview never appears, note what the health panel reports and whether audio is detected. If the preview appears but viewers later report a black picture, record when it began and compare that time with encoder and health messages.
The test can separate two states: FFmpeg is not producing a usable video output, or YouTube is not showing the video it receives. It cannot, by itself, tell you which setting is wrong. If your longer-term workflow depends on running files on a schedule, first verify each output and event path; the article on organising content for a 24/7 YouTube channel covers that separate planning task.
5. Review encoder and network health
If the local output and initial YouTube preview show a picture, but video later freezes or disappears, check the encoder and connection at the time of the change. Look at FFmpeg’s output for repeated errors, dropped or delayed frames, reconnects, and changes in reported speed. Check the machine’s CPU load as well. YouTube recommends using a current encoder, inspecting picture and sound directly in it, and checking CPU load and dashboard errors in its troubleshooting advice.
Then assess outbound connectivity. A connection can be adequate for audio but struggle with a higher-bandwidth video stream, or it can become unstable intermittently. YouTube advises leaving 20% of upload capacity as headroom in its streaming tips. Treat that as planning guidance, not proof that bandwidth explains a black picture. A network problem may show up as dropped frames or health warnings; a mapping error may produce no video even on a strong connection.
Compare the stream’s configured bitrate with the connection available during the test, including other activity sharing that connection. If upload capacity is marginal, try a controlled test at a lower video bitrate while keeping other variables steady. If it improves, that is useful evidence about capacity or stability, not a guarantee that the same setting will suit the final picture quality or every time of day.
If your stream runs from a rented machine, an interruption can also come from the process stopping or the host restarting, which is distinct from a video stream being omitted while audio continues. For that operational case, the guide to keeping FFmpeg streaming after an OVHcloud VPS reboot is relevant; it does not replace checking mapping and output health for this symptom.
6. Use logs and a short local test to narrow the cause
Collect evidence from the same run rather than relying on memory. Save the full FFmpeg command with the stream key and other credentials redacted, the input stream listing, the FFmpeg version, the relevant output log, and the YouTube health messages. Record whether a local output or encoder preview contains video and whether the Live Control Room preview does. Those observations locate the failure more reliably than the phrase “audio but no video” alone.
A short local test can help isolate the problem without repeatedly starting a public broadcast. Use the same input and the same selection and encoding options, but write a short file locally instead of sending it to YouTube. If that file contains audio but no picture, check input selection, mapping, filtering and video encoding. If it has both, compare its video stream and output settings with the live command, including the destination-specific muxing and protocol options.
A local file is not a complete substitute for a live test: it does not exercise YouTube ingest or the outbound live connection. Conversely, a YouTube preview without a matching local test may show that video reaches the platform but will not reveal which source or filter produced it. Treat each test as one boundary in the chain, not as universal proof.
When asking for help, provide the evidence that answers the next diagnostic question. Share the command with the key redacted, the input section of the log, the FFmpeg version and the relevant output lines. Say whether the local output and YouTube preview each show video. Do not post credentials or an unredacted log: stream keys grant access to a live destination and should be handled as secrets.
7. Change one variable at a time
Once the evidence points to a stage, change one relevant item and repeat the same test. If input video is absent, fix or select the source and recheck the input listing. If video exists but is not in the output, correct the applicable map or filtergraph connection. If the local output is sound but YouTube rejects or fails to preview its picture, compare codec and ingest options with YouTube’s current instructions and read the specific health message.
Keep a brief note of the original value, the change and what happened in the local output and preview. Revert a change that does not improve the evidence before trying another. This avoids accumulating speculative command edits that can obscure the actual failure or create a new one.
For a channel that should continue without your computer running, managing the FFmpeg process itself overnight can become another operational burden. StreamNeo can remove that particular burden when your workflow is an uploaded video sent to a 24/7 YouTube live stream, rather than a need to troubleshoot a custom FFmpeg source or command. It does not establish the cause of a missing picture, replace checking the video file, or change the need to verify the stream in YouTube.
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 can I hear audio if the video is missing?
Audio and video are separate streams that can be selected, encoded and delivered separately. A command may include an audio stream while omitting or failing to produce video, or the input itself may contain audio only. Check the FFmpeg input listing and output mapping before assuming YouTube is the cause.
Should I add -map 0:v:0?
Only if the input listing confirms that input 0’s first video stream is the picture you want and your filtergraph does not require a different mapping. The wrong index or an unconnected filtered output can leave the problem unchanged or introduce another one. Check the complete command and test the resulting output locally.
Can I fix it by changing YouTube’s settings?
Not if FFmpeg has no video at its input or excludes video from its output. If a local output contains video but the Live Control Room preview does not, then compare the ingest settings and health messages with YouTube’s current guidance. Change one setting at a time and confirm what the test shows.
What should I share to get help?
Share the FFmpeg command with the stream key redacted, the input stream listing, relevant output logs and FFmpeg version. Include whether a local output and the Live Control Room preview each show video, plus any health message. That evidence helps distinguish a source, mapping, encoding or ingest issue without exposing your key.