Use a foreground FFmpeg process in a systemd service with Restart=on-failure and a short RestartSec delay. This starts the encoder at boot and relaunches it after qualifying failures. It does not, by itself, prove YouTube has resumed receiving a healthy stream: verify the feed in YouTube Live Control Room.
What systemd can—and cannot—recover
systemd supervises the FFmpeg process. With Restart=on-failure, it can start FFmpeg again after an unsuccessful exit, qualifying signal, timeout, or watchdog failure. It will not restart the service after an intentional systemctl stop. Repeated failures can also hit systemd’s start-rate limits, whose settings and behavior depend on the installed systemd version. See the systemd.service manual for directives and limits on your host.
A restart is not a fix for a bad stream key, missing camera or file, rejected YouTube ingest, or persistent network failure. It may simply repeat the same failure. Diagnose whether the problem is the input, FFmpeg itself, or the output connection, and confirm recovery in YouTube Live Control Room.
Create a systemd service for FFmpeg
1. Prepare a foreground FFmpeg command
Use the FFmpeg command that already works for your service, with FFmpeg remaining in the foreground rather than daemonizing. The following is a starting template, not a tested, drop-in configuration. Replace the account, paths, codecs, input, options, and output with values that match your host and production:
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
[Unit]
Description=Church FFmpeg YouTube stream
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=stream
ExecStart=/usr/bin/ffmpeg -i INPUT -c:v libx264 -c:a aac -f flv 'OUTPUT_WITH_STREAM_KEY'
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
INPUT could be a camera or media source; the example does not specify a working input command. Likewise, OUTPUT_WITH_STREAM_KEY stands for the output URL and credentials appropriate to your YouTube ingest setup. Confirm the installed FFmpeg path with your system, and ensure the selected codecs and options are supported by that build.
2. Protect the YouTube stream key
Your stream key identifies where the encoder sends its feed and lets YouTube accept it. Treat it as a credential: restrict access to the service file and any other place it is stored, and avoid exposing it in public examples, screenshots, or logs. YouTube says a compromised key can be reset in Live Control Room. See YouTube’s stream-key guidance.
The template puts the output on the ExecStart line only to show the relationship between FFmpeg and systemd. Protect the unit file accordingly, and consider a more access-controlled method of supplying credentials if appropriate for your host. Do not paste a real key into a public support request.
Rank #2
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
3. Save, load, enable, and start the unit
- Save the unit as
/etc/systemd/system/church-stream.service. - Tell systemd to read the new or changed unit:
sudo systemctl daemon-reload. - Enable it for boot and start it now:
sudo systemctl enable --now church-stream.service. - Check whether the process is running:
systemctl status church-stream.service. - Follow its logs while diagnosing:
journalctl -u church-stream.service -f.
If you edit the unit later, run sudo systemctl daemon-reload again. If you intentionally stop it with sudo systemctl stop church-stream.service, systemd does not treat that deliberate stop as a failure to restart.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Choose restart behavior for the failure you expect
Restart=on-failure is a practical default for an encoder expected to keep running: it restarts after a nonzero exit and qualifying abnormal conditions, but not after a clean exit. Other documented policies include no (the default), on-success, on-abnormal, on-abort, on-watchdog, and always. Select one only after considering how FFmpeg exits in your setup.
RestartSec=5 in the template delays a restart by five seconds; choose a delay that gives transient problems a chance to clear without creating an unnecessarily rapid retry loop. Start-rate limiting still applies when a service fails repeatedly. Consult the manual installed on the server, since the systemd release and its effective settings are not specified here.
Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
Separate process restarts from FFmpeg reconnects
systemd acts when the supervised FFmpeg process exits or otherwise meets its restart conditions. FFmpeg may also be able to retry some transport operations without exiting, but its reconnect options are protocol- and direction-specific. The FFmpeg protocol documentation describes options such as reconnect, reconnect_at_eof, reconnect_on_network_error, reconnect_on_http_error, reconnect_streamed, and retry limits under HTTP(S) behavior. These are not universal settings for every protocol or for RTMP/RTMPS output.
- If the camera or other input disconnects, investigate the input protocol and whether FFmpeg exits or remains running.
- If FFmpeg exits, systemd can relaunch it according to the unit policy.
- If the output transport suffers a supported transient error, a protocol-specific FFmpeg retry may help; confirm the option applies to the protocol and direction in use.
- If the process stays up but YouTube is not receiving a usable feed, a systemd restart policy may not activate at all.
Do not add HTTP reconnect flags as a generic fix for a YouTube RTMP/RTMPS output. FFmpeg version and build matter, so check the documentation for the installed version. An individual FFmpeg-user report from 2025 describes one RTSP input timeout followed by systemd retries; it is an example of a particular setup, not evidence that its flags or one-second timeout suit every stream. The report is available at FFmpeg-user, September 2025.
Recommended Free Tools
Match the encode to YouTube and your upload
Use YouTube’s current encoder table for the codec, resolution, and frame rate you actually send. Its guidance, accessed in 2026, recommends CBR and a two-second keyframe frequency, with keyframes no more than four seconds apart; it recommends RTMPS. Its H.264 examples list these bitrate figures:
Rank #4
- All-in-One Complete Kit: This SANOOV RPi 5 bundle comes with Raspberry Pi 5 4GB RAM single board, active cooler, durable ABS case and screwdriver. No extra parts needed, ready to use right out of the box for beginners and hobbyists
- Powerful Single Board Computer: Equipped with 4GB RAM and high-performance processor, delivers fast running speed for 4K playback, AI projects, programming and daily computing tasks. SANOOV for raspberry pi 5 4GB is equipped with broadcom 64 quad-core Arm Cortex A76 processor with gigabit ethernet and upgraded with IEEE 802.11ac Wi-Fi, Bluetooth 5.0 dual-band 2.4Ghz and 5Ghz and Power Over Ethernet (POE). Upgrading delivers 2-3 x speed vs Pi 4, redefining the experience
- Efficient Active Cooler: Effectively lowers operating temperature and prevents performance throttling. Runs quietly even under long-time heavy load, ensures stable operation all day long. SANOOV RPi 5 4GB kit offer an active cooler, which combines an aluminium heatsink with a high-performance PWM fan. Active cooler is fully compatible with the Pi OS, which can effectively reduce the temperature of RPi5 and ensure its good performance during long-term high load operation
- Sturdy ABS Protective Case: Well-fitted for Raspberry Pi 5 board, can be secured with 4 screws to effectively protect the Pi 5 motherboard from damage, reserves full access to all ports and buttons. SANOOV uses ABS material to produce the case, which has a softer texture and feel. Meanwhile, SANOOV case adopts a layered design for easy disassembly and installation. (Tip: The Case cannot install M.2 HAT Add on Board and Solid State Drive!)
- Wide Application & Full Compatibility: Seamlessly compatible with official OS and mainstream peripheral accessories for Raspberry Pi 5. Whether you are a beginner, student, electronics hobbyist or professional developer, this all-in-one kit meets your diverse needs. It excels in IoT projects, robotics design, retro gaming devices, home media servers and other DIY creations. Backed by a large global community, you can easily find guides, technical support and shared projects online
| H.264 output | YouTube-listed minimum | YouTube-listed recommended bitrate |
|---|---|---|
| 720p at 30 fps | 3 Mbps | 8 Mbps |
| 1080p at 30 fps | 5 Mbps | 14 Mbps |
These are YouTube’s encoder recommendations, not universal requirements or a guarantee that a particular connection can sustain the stream. Select the matching row for your actual settings rather than applying an example bitrate to every resolution or frame rate. See YouTube’s encoder settings, bitrates, and resolutions.
YouTube’s networking guidance recommends 20% upload headroom and warns that connectivity disruptions can break a stream. Measure the available upload capacity under realistic conditions, including other devices sharing the connection; do not plan to use all of the nominal bandwidth for the stream. See YouTube’s encoder guidance and YouTube’s network guidance.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Test recovery and confirm the broadcast
- Before a service, check
systemctl status church-stream.serviceand review recent output withjournalctl -u church-stream.service. - In a planned test window, cause a controlled FFmpeg failure and observe whether systemd starts a new process. Avoid testing by exposing or changing a live stream key.
- Check that the input is present and FFmpeg is sending data after the restart.
- Open YouTube Live Control Room and verify stream health and the actual audio and video. Confirm the public or scheduled broadcast behaves as intended before relying on the setup for a service.
YouTube advises: “Make sure to test before you start your live stream.” Its guidance also recommends testing with audio and video movement similar to the intended stream, monitoring stream health, and reviewing messages during the event. A service showing “active” in systemd establishes only that systemd considers the process active; it does not confirm viewer playback.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
Troubleshoot common failures
- The unit is not found or changes do not take effect: Check that the filename ends in
.serviceand is under/etc/systemd/system/, then runsudo systemctl daemon-reload. - systemd reports a permission or execution error: Confirm the FFmpeg path, that the service account can execute it, and that the account can read the input and any required files.
- FFmpeg exits repeatedly: Read
journalctl -u church-stream.service -ffor the actual error. Check the input, output URL, key, codec support, and network before changing restart timing. - The unit is active but YouTube has no healthy feed: Check FFmpeg’s output and Live Control Room. A live process can be stuck on input or output problems without exiting, so systemd may have nothing to restart.
- Retries stop after repeated failures: Check for systemd start-rate limiting and the installed release’s effective settings. Fix the underlying fault before resetting or changing limits.
- The service will not restart after an intentional stop: That is expected. Start it again with
sudo systemctl start church-stream.service. - Reconnect flags have no effect: Verify that the option is documented for the installed FFmpeg version and the exact protocol and direction. HTTP(S) reconnect behavior should not be assumed to apply to RTMP/RTMPS output.
Or let it run in the cloud
If the goal is an always-on YouTube channel playing uploaded church recordings, StreamNeo is a cloud alternative: upload a recording or build a playlist, add your YouTube stream key once, and go live. It loops the uploaded video, so nothing has to stay on at the church or at home. StreamNeo plays uploaded videos; it does not broadcast a live camera feed.
- Any quality up to 4K 60fps at one flat price per slot, with the video streamed as uploaded and no re-encode or quality tiers.
- Automatic recovery if YouTube drops the stream.
- The first day is free with no card, one free day per account.
- Monthly: $9.99 per month.
See StreamNeo for details, or start the free first day.
Quick Recap
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.




