You can use FFmpeg on a Hetzner Cloud server to send a continuous broadcast of local video files to YouTube Live. The important distinction: this means a playlist of files available to FFmpeg—not a YouTube watch-page playlist URL. The official material cited here does not establish a YouTube playlist URL as a supported FFmpeg input or grant permission to rebroadcast its videos.
The setup requires media you own or are licensed to broadcast, a playlist FFmpeg can read, a YouTube Live ingest endpoint and private stream key, and a server process you supervise. There is no single verified command in the sources here that can be guaranteed to work across FFmpeg builds, source files, and YouTube ingest choices, so use the steps below as a deployment plan and validate your exact configuration before relying on it.
As an Amazon Associate I earn from qualifying purchases.
What “a YouTube playlist” means in this setup
Here, YouTube is the destination, not the source. FFmpeg reads local or otherwise accessible media files on the server and sends the resulting broadcast to YouTube Live. Prepare only content you own or have permission to rebroadcast.
A YouTube watch-page playlist URL is not established by the official material cited here as a supported FFmpeg input. Those materials also do not grant rights to copy, download, or rebroadcast YouTube videos. Do not treat a playlist URL as a substitute for accessible source files or broadcast rights.
#1 Best Overall
Plan the server and bandwidth before uploading
Choose a server for the workload
Hetzner Cloud servers are virtual machines for running operating systems and programs. Hetzner’s overview distinguishes shared-resource and dedicated-resource server types, and says public connectivity requires a Primary IP. The overview page says it was last changed on 2022-06-28, so verify current server, IP, and traffic pricing and availability for your selected region before ordering: Hetzner Cloud server overview.
Encoding load depends on whether FFmpeg can pass through compatible media or must transcode it. The material cited here does not establish a particular CPU or memory requirement for your playlist. Check the installed FFmpeg build, the source codecs, and the actual server resource use during a representative test rather than assuming a server size will handle every file.
Rank #2
Estimate outgoing traffic from the broadcast bitrate
Hetzner bills outgoing traffic; its Cloud billing FAQ says overage is charged in 100 MB blocks. Notifications at 75% and 100% are informational and do not cap or stop traffic. Estimate monthly decimal gigabytes with this planning formula: bitrate in megabits per second × 0.45 × 24 × 30. This is a calculation, not a Hetzner-published usage statistic. Refine it for protocol overhead, reconnects, and the actual billing period, then check the current included traffic for your server type and region. See Hetzner’s Cloud billing FAQ.
Free tools Windows power users keep installed
One-click scans. No signup required.
For perspective, at a steady 4 Mb/s the formula gives about 1,296 decimal GB for 30 days, before overhead and reconnects. Use the bitrate you actually plan to send; a higher bitrate increases egress in proportion.
Rank #3
Do not treat bandwidth or server availability as a stream guarantee
Hetzner says Cloud bandwidth is not guaranteed and that users can expect about 300–500 Mbit/s; this is an expectation, not a per-VM minimum or assurance of uninterrupted service. The host connection is shared among instances. See Hetzner’s Cloud technical FAQ.
Hetzner’s Cloud and vServer service agreement says it will use commercially reasonable efforts to ensure 99.9% monthly availability for its Cloud Servers, measured for each individual server in a calendar month. The agreement excludes, among other cases, customer software or configuration failures and network interruptions outside Hetzner’s reasonable control. This is availability-effort language for the server, not an end-to-end guarantee for FFmpeg, YouTube ingest, or the broadcast: Hetzner Cloud and vServer service agreement.
Rank #4
Prepare media and an FFmpeg-readable playlist
- Collect your source files. Upload the video and audio files you have rights to broadcast to the server, or make them accessible from it. Confirm that the files are complete and readable by the installed FFmpeg build.
- Choose a playlist/input method. FFmpeg’s formats documentation covers supported formats and muxer options, but the official sources cited here do not provide a complete, tested recipe for looping a concat playlist into YouTube Live. Consult the FFmpeg Formats Documentation for the format you choose, and validate the playlist with your installed build.
- Check transitions and duration. Confirm the intended order, whether playback should repeat, and what happens at the end of each file. A playlist that parses successfully is not by itself proof that successive files have compatible streams or that the output will meet YouTube’s ingest requirements.
- Test with the actual media. Verify that the playlist plays in the intended order and that FFmpeg can read all files. Check logs for input, timestamp, or stream errors before connecting a persistent broadcast.
Do not publish a command containing your actual stream key. A command or service configuration that embeds the key can expose it in logs, process listings, screenshots, or shared configuration. Keep credentials private and use a secure method appropriate to your server environment.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteSet up YouTube Live and choose an ingest protocol
- Open YouTube Live setup. In YouTube’s current live setup flow, select the ingest protocol and obtain the server endpoint and stream key for that broadcast. Labels and available options can change; follow the current YouTube Studio instructions for the stream you are creating.
- Protect the stream key. Treat it like a password. Do not put it in a public example, publish it in a screenshot, or leave it in a log that others can read. If it is exposed, replace it through YouTube’s live setup flow.
- Match FFmpeg’s output to the selected ingest. FFmpeg’s muxer settings do not override YouTube’s requirements. Use the current endpoint settings and platform guidance, and validate that YouTube reports receiving a healthy stream.
RTMP versus HLS
Choose based on the format and protocol requirements shown for your YouTube broadcast, not on the assumption that HLS is always preferable. YouTube states that “HLS has higher latency because it sends segments of video, instead of a continuous stream like RTMP.” If the stream format supports both and low latency matters, compare the RTMP route with the current HLS requirements in YouTube’s setup guidance: YouTube Help: Set up an HLS stream.
For YouTube HLS ingestion, YouTube’s guidance specifies 1–4 second segment duration, Transport Stream segments, no byte range, HTTPS POST/PUT, and a rolling playlist with no more than five outstanding segments. It says encryption beyond HTTPS is unsupported by that guidance. These are YouTube ingestion requirements; they are not universal settings for every FFmpeg HLS output. FFmpeg’s HLS format documentation describes playlist and segment controls, but choosing HLS options alone does not ensure YouTube will accept the stream.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Run FFmpeg continuously and supervise it
Once the media playlist and ingest settings are validated, run FFmpeg at real-time speed for the broadcast and arrange process supervision. The sources cited here do not verify an exact command, service unit, or restart policy that survives every failure. Build and test the invocation against the installed FFmpeg version, source files, current YouTube endpoint, and selected protocol; the FFmpeg documentation is the reference for its options.
- Run a short, controlled test. Start the intended playlist and output configuration for a limited test window. Check the FFmpeg log and YouTube’s live status together; a running process alone does not prove that YouTube is receiving a valid broadcast.
- Confirm real-time behavior. Make sure playback advances as expected and the process is not racing through media faster than broadcast time. Check for timestamp, input, or output errors and confirm the live preview behaves as intended.
- Install process supervision. Use an operating-system service manager or another monitoring arrangement to start the broadcast and detect a stopped process. Test what happens after an intentional process stop and restart. A restart policy can restart FFmpeg; it cannot by itself establish that YouTube ingest is healthy or that every failure will recover cleanly.
- Monitor the whole path. Watch FFmpeg logs, YouTube’s live status, server resource use, and outgoing traffic. Recheck the stream after reconnects and after playlist transitions.
Troubleshoot common failures
| Symptom | What to check | Next action |
|---|---|---|
| FFmpeg runs, but YouTube shows no incoming stream | Whether the endpoint and stream key came from the current YouTube Live setup; whether the chosen output matches the selected ingest protocol. | Recheck the current YouTube setup and FFmpeg logs. If the key was exposed, replace it and update the private configuration. |
| HLS is rejected or does not behave as expected | Whether the output meets YouTube’s HLS requirements: 1–4 second segments, Transport Stream segments, no byte range, HTTPS POST/PUT, and no more than five outstanding segments in the rolling playlist. | Compare the actual output and transport with YouTube’s current HLS setup guidance. Do not assume generic FFmpeg HLS defaults satisfy YouTube. |
| Playback stops at a file boundary or a file fails to load | Whether every playlist entry is accessible and readable, and whether the files’ streams and timestamps work with the chosen input method. | Test each file and the playlist sequence with the installed FFmpeg build; correct inaccessible paths or incompatible inputs before restarting the live broadcast. |
| The process stops and the broadcast does not resume | Whether the supervisor detected the exit, whether FFmpeg exited with an error, and whether YouTube still accepts the connection. | Use the logs to identify the failure, verify YouTube’s live status, then test the restart path deliberately. Do not assume server-level availability keeps a failed FFmpeg process alive. |
| Traffic approaches or exceeds the plan allowance | Actual output bitrate, elapsed broadcast time, and the current allowance for the selected server type and region. | Recalculate egress using the measured bitrate and billing period. Hetzner’s 75% and 100% notices do not cap traffic; review the billing FAQ before continuing. |
| Broadcast interruptions despite a healthy VM | FFmpeg process health, YouTube ingest status, outgoing network behavior, and server resource use. | Check each part of the path separately. Hetzner’s bandwidth expectation and server availability-effort language do not guarantee uninterrupted end-to-end streaming. |
Copyright, live access, and channel policy
Use media you own or are licensed to rebroadcast. Technical access to a file or playlist is not permission to send it to YouTube, and the cited FFmpeg and YouTube setup pages do not provide broadcast rights. The cited materials also do not establish a YouTube playlist URL as an FFmpeg source.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Before going live, review YouTube’s current live-stream and copyright rules for your account and content. Do not assume that permission to upload a video, or its availability on YouTube, automatically permits a continuous rebroadcast. This guide does not establish account eligibility rules or resolve the legal status of any particular content.
Or let it run in the cloud
If your goal is to keep uploaded videos looping on YouTube rather than manage a Hetzner server and FFmpeg process, StreamNeo is a cloud alternative: upload your recording or build a playlist, add your YouTube stream key once, and go live. StreamNeo loops uploaded videos to YouTube; it does not broadcast from a camera.
Quick Recap
- Your computer and home connection do not have to stay on.
- Videos stream as uploaded, up to 4K 60fps, at one flat price per slot with no re-encode or quality tiers.
- StreamNeo automatically recovers if YouTube drops the stream.
- The first day is free with no card, one free day per account. Monthly service is $9.99 per month.
Start your free StreamNeo day.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




