YouTube Live 1080p30 H.264 bitrate: 5 to 14 Mbps, GB per hour
YouTube Live recommends 5 to 14 Mbps for 1080p30 H.264, with 2 B-frames and a 2-second keyframe. The gigabytes per hour for each rung, and what Sume cannot set.

For 1080p at 30 fps with H.264, YouTube's live page gives a minimum of 5 Mbps and a recommended 14 Mbps. At 14 Mbps a one-hour stream moves 6.3 GB, and at 5 Mbps it moves 2.25 GB. Sume's Timeline has no bitrate, keyframe or B-frame field, so those live in the encoder you stream from.
H.264 ranges at 30 fps
YouTube's table gives separate ranges for AV1 and H.265 versus H.264. The rows here use the H.264 columns only. Gigabytes are decimal and computed as megabits per second times 3,600 seconds, divided by 8, divided by 1,000.
| Ingest | Minimum | Recommended | GB per hour at minimum | GB per hour at recommended |
|---|---|---|---|---|
| 720p @30fps | 3 Mbps | 8 Mbps | 1.35 GB | 3.60 GB |
| 1080p @30fps | 5 Mbps | 14 Mbps | 2.25 GB | 6.30 GB |
| 1440p @30fps | 7 Mbps | 21 Mbps | 3.15 GB | 9.45 GB |
| 2160p (4K) @30fps | 11 Mbps | 42 Mbps | 4.95 GB | 18.90 GB |
The encoder settings
YouTube lists RTMP or RTMPS for protocol, up to 60 fps, a recommended keyframe interval of 2 seconds that must not exceed 4, constant bitrate encoding, and AAC or MP3 audio. Its recommended advanced settings are progressive scan, 2 B-frames, 1 reference frame, CABAC, a square pixel aspect ratio and Rec. 709 color for SDR.
What the Live Control Room needs
YouTube says that in the Live Control Room you only need to specify resolution, frame rate and bitrate in your encoder, because it detects the rest. It also says low latency is not available at 4K, so every 4K stream uses normal latency optimized for quality.
Run the arithmetic
import asyncio
# YouTube recommended H.264 ranges, 30 fps: (minimum Mbps, recommended Mbps)
RATES = {"720p": (3, 8), "1080p": (5, 14), "1440p": (7, 21), "4K": (11, 42)}
def gb_per_hour(mbps):
return mbps * 1_000_000 * 3600 / 8 / 1_000_000_000
async def main():
for name, (low, high) in RATES.items():
print(name, round(gb_per_hour(low), 2), round(gb_per_hour(high), 2))
asyncio.run(main())Where Sume fits
Timeline 1.0 can fix width, height and frame rate (24, 25, 30 or 60) of a pre-rendered MP4 up to 1800 seconds, but it rejects codec and crf keys, so bitrate and B-frame structure are not yours to choose there. For a 30-minute pre-recorded segment, the live encoder's bitrate decides the data sent, not the MP4.
Sources
Related posts
More in Developers
- Which MCP server lets Claude Code or Cursor generate video and images?
MCP servers that let Claude Code and Cursor make video and images: Sume, fal, Replicate, Runway, Higgsfield. Endpoints, sign-in, billing, setup.
- Idempotency keys for AI video APIs: retry without paying twice
An idempotency key makes a retried create return the original run or job instead of a second paid one. How Sume's Idempotency-Key works on each API.
- Signed webhooks for Sume video runs: events, retries, verification
Sume sends one HMAC-SHA256 signed POST when a Format, Action, or Agent Completion run completes or fails. Verify the raw body and dedupe on request_id.
- Spend caps for unattended AI agents: how Sume bounds each run
An unattended agent has no one to approve spend, so Sume caps generation per run: required on Agent Completions, and up to $500 on Format runs.
Written by Sume