Before streaming, use ffprobe to inspect the video stream’s codec, frame rate and bitrate when that field is available. Then compare what you found with YouTube’s guidance for the workflow you actually plan to use: uploading a prerecorded file or sending a live encoder feed.
Those workflows have different settings and bitrate recommendations. A video-stream bitrate, an audio-stream bitrate and an overall container bitrate describe different things; if the video bitrate is missing, the other fields are not substitutes for it.
Why inspect before streaming
Checking the file first can prevent avoidable surprises: an unexpected codec, a frame rate different from the one you intended, or an absent bitrate field that you might otherwise mistake for a problem. It also gives you a useful description of the source before you choose upload settings or configure a live encoder.
First decide what you mean by “before a YouTube stream”. If you are uploading a finished video, YouTube processes that file as an upload. If you are sending a live feed from an encoder, YouTube receives an ongoing signal with encoder settings such as codec, resolution, frame rate, bitrate mode and keyframe interval. The recommendations for one route do not stand in for the other.
This distinction matters even if the same video content is involved. You might inspect a prerecorded devotional programme and upload it as a video, or play that file through an encoder as part of a continuous live channel. The file’s properties help you understand the source, but the live encoder’s outgoing settings describe the feed YouTube receives. A file’s reported bitrate does not set or guarantee the bitrate of a later live encode.
Inspection is not a quality score. A high bitrate does not by itself prove that a file looks good, and a modest bitrate does not tell you whether a particular stream will be accepted. Resolution, frame rate, codec, source quality, motion and whether the content is SDR or HDR all affect how the figures should be interpreted. YouTube’s tables are recommendations for specified configurations, not universal validity thresholds.
For a channel that runs overnight, file inspection is only one check in a larger routine. You still need to think about the upload connection and what happens if a local machine or stream stops. The practical concerns overlap with those in checking upload speed for a 24/7 sleep-sounds stream, but remember that network capacity and encoded video bitrate are related, not identical: the connection must carry the outgoing stream with room for variation.
Run ffprobe on the file
ffprobe is part of the FFmpeg project and reads information about media streams and their containing format. Its official documentation describes options for showing stream and format information, along with human-readable and machine-readable output. If it is already installed, a simple starting command is:
ffprobe -hide_banner -show_format -show_streams input.mp4
Replace input.mp4 with the file’s actual name and path. If the file is in the current folder, a short filename is enough; otherwise, provide its full path. On Windows, quote a path that contains spaces, for example "D:\\Videos\\evening programme.mp4". On macOS or Linux, a path with spaces should also be quoted, for example "/home/user/Videos/evening programme.mp4".
The command asks for two scopes of information. -show_streams reports each stream separately, so a file with video and audio typically has distinct entries. -show_format reports properties of the overall container, such as format information and any overall bitrate the tool can derive or display. The output can be long; start by finding the stream whose codec_type is video, rather than reading a number near the top and assuming it applies to the picture.
If you prefer a compact readout, ask for selected fields in a machine-readable form. For example:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,width,height,r_frame_rate,avg_frame_rate,bit_rate,pix_fmt -of default=noprint_wrappers=1 input.mp4
This selects the first video stream and displays a handful of useful fields. A file may have more than one video stream, and this command selects v:0, the first one. If the file has multiple angles, tracks or other video streams, inspect the relevant stream rather than assuming the first is the one you will use. You can remove -select_streams v:0 and inspect the full output if you are unsure.
You do not need to understand every field to do the first check. Record the video stream’s codec, width and height, the frame-rate values, and bit_rate if it is present. Then inspect the audio stream separately. Keep a note of which field came from which stream; that small habit prevents confusion when a tool also prints a format-level bitrate.
If the command is not recognised, ffprobe may not be installed or available in your command path. You can use a graphical media inspector or the details view in an editor instead, but look for stream-level details and identify whether each value belongs to video, audio or the container. A graphical display is convenient; the scope of the displayed field still matters.
Read the video codec and frame-rate fields
Within the video stream entry, codec_name identifies the codec reported for that stream. You may see a short label such as h264; the exact output depends on the file. YouTube’s upload guidance recommends H.264 for uploaded video, while its live encoder guidance lists H.264, H.265/HEVC and AV1. That difference is one reason to identify your workflow before comparing values.
Other fields give useful context. width and height describe the frame dimensions; pix_fmt gives the pixel format; and profile may provide an additional codec profile label. These fields do not replace a check for SDR or HDR. If you do not know whether the source is HDR, check the export settings or inspect its colour-related metadata with a suitable tool before choosing an HDR row in YouTube’s upload table.
Frame rate deserves particular care because ffprobe may show both r_frame_rate and avg_frame_rate. These fields can differ, especially with variable-frame-rate material or particular container and stream combinations. Do not silently round a fractional rate to a nearby whole number. For example, YouTube recognises recorded frame rates such as 23.98, 29.97 and 59.94 in its upload troubleshooting guidance; recording and preserving the value you actually have is more useful than calling all of them 24, 30 or 60.
For a straightforward file, the two values may agree or describe the expected rate in familiar ways. When they do not, treat that as a reason to investigate rather than choose whichever number suits a recommendation table. Check the export or recording settings and, if the distinction affects a live encoder configuration, inspect a representative playback or test output as well. The purpose is to understand what the file contains, not to force it into a label.
The frame rate also needs context. A 1080p file at 30 frames per second is not the same configuration as 1080p at 60 frames per second, even though the resolution matches. Likewise, YouTube upload recommendations vary by resolution and standard or high frame rate, while live recommendations also vary by ingestion codec. Note the resolution and rate together before consulting a table.
Find bitrate when the file reports it
Look for bit_rate in the video stream entry. If it appears there, it is the stream-level field to consider as the video bitrate reported by the tool. The result may be expressed in bits per second, so a value such as 8000000 represents 8 Mbps. Check the units shown by the inspector before converting; some graphical tools format values for readability.
A stream’s bitrate may be absent. Some formats or files do not provide a bitrate value in the way you expect, and a tool may not be able to report one reliably from the available metadata. In that case, say that the video-stream bitrate is not reported. Do not copy the container’s overall bitrate into the video field or infer the missing value from audio bitrate.
There are ways to obtain an estimate by analysing a file’s size and duration, but an average estimate for the whole file is not automatically the encoded bitrate of its video stream. Audio, container overhead and variable-rate encoding affect that calculation. If you need a meaningful video-only measurement and the field is absent, use an appropriate analysis workflow and label the result as an estimate, rather than presenting it as a value ffprobe reported for the stream.
Even when the field is present, it describes the encoded stream in that file; it is not a universal measure of visual quality or a record of what YouTube will receive after you upload or re-encode it. A file can use variable bitrate, where the data rate changes over time, so a single displayed value may be an average or metadata value rather than a constant rate at every moment. For a live encoder, the outgoing configuration is the relevant setting to compare with live guidance.
Distinguish video, audio and container bitrate
A media file can contain multiple streams inside one container. In a typical video file, the picture has a video stream and the sound has an audio stream. The container holds those streams and may have its own overall or format-level bitrate. These are separate scopes, even if an inspector displays their values close together.
| Field or scope | What it describes | How to use it |
|---|---|---|
Video stream bit_rate |
The reported bitrate for the selected video stream, when available | Compare cautiously with the appropriate video configuration guidance |
Audio stream bit_rate |
The reported bitrate for the selected audio stream, when available | Use it to understand the audio track, not the picture |
Format or container bit_rate |
An overall rate for the file or container, when reported | Treat it as a whole-file figure, not as video bitrate |
| Missing stream value | No video-stream bitrate is reported in that field | Leave the video value unknown unless you measure or estimate it separately |
For instance, suppose an inspector reports an audio stream at one rate and a format-level rate for the entire file. Neither is a direct answer to “what is the video bitrate?” The whole-file rate may include both audio and video, while the audio value applies only to sound. If the video stream has no reported bit_rate, you do not have a reported video bitrate from that output.
This distinction is useful when a file is unusually large or small. A container-level rate can help explain the total volume of data over time, but it does not tell you how that volume is divided between picture and sound. A music-led bhajan file with a substantial audio track, for example, cannot be compared with a video-only target by treating the entire file’s rate as its video rate.
Keep the same discipline when you use an editor or another inspection tool. A panel headed “overall bitrate” or simply “bitrate” may refer to the complete file, while a stream panel may list video and audio separately. Read the field label and scope before noting down a number. If the tool does not say what the number covers, do not assume it is video-only.
Compare upload files with YouTube upload guidance
If you are uploading a finished video, use YouTube’s recommended upload encoding settings. The page recommends encoding and uploading at the frame rate used during recording, recommends progressive scan, and identifies H.264 as its recommended video codec. Its bitrate recommendations depend on resolution, frame rate and whether the material is SDR or HDR. Consult the current table for the complete configuration you have.
As examples, the YouTube Help upload table accessed on 3 October 2026 lists SDR 1080p at 8 Mbps for 24, 25 or 30 fps, and 12 Mbps for 48, 50 or 60 fps. It lists SDR 720p at 5 Mbps for 24, 25 or 30 fps, and 7.5 Mbps for 48, 50 or 60 fps. Those figures are YouTube’s upload recommendations, not requirements that prove a file is valid and not a promise that a given file will look good.
The table also has different recommendations for 2160p and for HDR. For example, the page accessed on 3 October 2026 lists SDR 2160p at 35–45 Mbps for 24, 25 or 30 fps and 53–68 Mbps for 48, 50 or 60 fps; its HDR figures differ. Use the official page’s matching row rather than carrying the 1080p example across to another resolution or colour range. The page does not state a publication year for these technical recommendations, so do not assign one.
Compare like with like: identify the file’s resolution, actual frame rate and SDR/HDR status, then read the matching upload row. The file’s reported video bitrate can help you understand how its encoded rate relates to that recommendation, if reported. It does not establish the precise encoding history, nor does it mean you should re-encode solely to make a number match. If you are preparing a loop for a local news channel or devotional programme, inspect the export settings before uploading and keep a copy of the original file.
If the goal is to play a recorded file through an encoder as a live broadcast, do not use the upload table as your live target. The upload guidance applies to the upload workflow. A live encoder produces an outgoing feed with its own settings, so compare that feed with the live page instead. For a prerecorded stream, the relationship between playlist handling and the source file is a separate concern; for example, rotating a playlist without repeating the last video addresses continuity rather than the upload bitrate table.
Compare live settings with YouTube live guidance
For an encoder feed sent to YouTube Live, use the live-specific encoder settings, bitrates and resolutions guidance. YouTube’s current help page lists H.264, H.265/HEVC and AV1 as ingestion codec choices, supports up to 60 fps, recommends constant bitrate (CBR), and recommends a two-second keyframe frequency that should not exceed four seconds. These are live encoder considerations; they should not be read as upload-file requirements.
The live bitrate table depends on codec, resolution and frame rate. In the page accessed on 3 October 2026, YouTube lists H.264 at 14 Mbps for 1080p30 and 17 Mbps for 1080p60. For AV1 or H.265/HEVC, the corresponding listed values are 10 Mbps and 12 Mbps. These examples are not a complete table. For other combinations, use the matching row on YouTube’s current page rather than interpolating or borrowing a value from the upload recommendations.
YouTube Help says, “YouTube will automatically detect which encoder settings you chose.” That detection does not remove the need to choose and check a suitable output configuration. Confirm the encoder’s resolution, frame rate, codec and bitrate mode, then test a representative segment with sound and motion similar to the programme you intend to run. YouTube also recommends testing with an upload-speed test and leaving 20% bandwidth headroom in its streaming tips. The connection needs capacity for the outgoing live feed; its speed test is not a measurement of the source file’s video bitrate.
A quiet static image and a moving camera scene can behave differently in an encoder even when both use the same output settings. Include representative motion and audio in a test, and monitor stream health while live. If you are planning a 24/7 channel, also consider what continues to run if your computer loses power or its connection drops. The practical lesson from a devotional stream affected by a full Linux VPS disk is to check the operating setup’s failure points as well as the media file; the file’s codec report cannot reveal storage or continuity problems.
If the specific problem is keeping a computer on to relay a fixed video file, StreamNeo removes that particular burden: you upload the file and use your YouTube stream key, while the broadcast can continue with your computer switched off. It is for YouTube streams, not a substitute for inspecting the media or selecting the correct live settings, and you should still check your channel and stream configuration before relying on it.
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
Which ffprobe field is the video bitrate?
Look for bit_rate in the entry for the video stream, usually identified by codec_type=video. A format-level bitrate applies to the overall container, and an audio stream’s bitrate applies to sound. Neither should be presented as the video-stream bitrate.
What if ffprobe does not report a video bitrate?
Record that the field is absent rather than filling it with the container or audio value. You can use a separate analysis method if you need an estimate, but label the result clearly and do not imply it was reported by ffprobe as the video stream’s bitrate.
Should I match the upload table or live table?
Use YouTube’s upload guidance when uploading a finished file. Use the live encoder guidance when sending an encoder feed; its settings and bitrate recommendations depend on the outgoing codec, resolution and frame rate. They are not interchangeable.
Should I round 29.97 fps to 30?
Keep the reported frame-rate value when describing the file, and consult YouTube’s guidance for the relevant workflow. YouTube recognises fractional recorded rates such as 29.97, so silently rounding can hide a meaningful difference between the actual source and your notes.