Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstalliTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Use FFmpeg’s subtitles video filter to render subtitle text directly into the video frames, then encode that filtered video and send it to YouTube using the live encoder settings for your channel. You need an FFmpeg build with libass support. Because the words become part of the picture, viewers cannot turn them off as a separate caption track.
First, identify what “playlist stream” means
The phrase can describe three different outputs, and the right setup depends on which one you mean:
- A sequence of local clips: FFmpeg plays files successively into one live encoder process. A different subtitle file for each clip requires explicit handling of each clip’s subtitle input and timing.
- A YouTube playlist: This is a playlist of videos already published on YouTube, not a live encoder input. Burning subtitles into a source video is a separate preparation step.
- An HLS playlist: FFmpeg can package media as HLS, but creating an HLS playlist does not by itself send a stream to YouTube Live. See the FFmpeg Formats Documentation for HLS format options and YouTube’s encoder setup guidance for live ingest.
The example below demonstrates rendering subtitles on one input video. It is not a complete playlist or YouTube streaming command.
Burn subtitles into one video with FFmpeg
1. Check the subtitle source
Subtitles may be in an external text file, such as SRT or ASS, or embedded as a subtitle stream inside the video container. If the input has multiple subtitle tracks, identify the language and stream you intend to use; do not assume the first track is the right one. FFmpeg’s Filters Documentation describes the subtitles filter and its stream-selection options.
#1 Best Overall
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
2. Confirm the build has the filter
The subtitles filter requires FFmpeg to be configured with libass support. Check the available filters in your installation; if subtitles is unavailable, use a build that includes libass. The filter’s documentation specifies the --enable-libass configuration requirement.
3. Render an external SRT file
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" -c:v libx264 -c:a copy output.mp4
This illustrative offline command reads input.mp4, applies subtitles.srt to the video, encodes the result with libx264, and attempts to copy the audio stream. It assumes the input and SRT file exist, your FFmpeg build has the filter and the libx264 encoder, and the audio codec is compatible with the output container. It is not a tested command or a complete YouTube playlist configuration.
Rank #2
- Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1. 5GHz
- 2. 4 GHz and 5. 0 GHz IEEE 802. 11b/g/n/ac wireless LAN, Bluetooth 5. 0, BLE
- 2 × USB 3. 0 ports, 2 x USB 2. 0 Ports
- 2 × micro HDMI ports supproting up to 4Kp60 video resolution
- Micro SD card slot for loading operating system and data storage
4. Select an embedded subtitle stream when needed
If the subtitles are embedded, use the filter’s documented input-stream selection rather than pointing it at an external filename. For files with multiple subtitle streams, specify the intended stream after inspecting the input and the filter syntax in the FFmpeg Filters Documentation. Confirm that the selected stream contains text subtitles; subtitle formats and stream types are not interchangeable.
5. Encode the filtered video
A visual filter changes decoded video frames, so the filtered video must be encoded. -c:v copy cannot be used to apply the filter: stream copy bypasses decoding, filtering, and re-encoding. Audio may be copied only if its codec and container are compatible with your chosen output.
Rank #3
- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
- 1GB, 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
- 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE Gigabit Ethernet
- 2 USB 3.0 ports; 2 USB 2.0 ports.
- Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
Prepare the result for YouTube Live
For live ingest, configure the outgoing format and codec using YouTube’s current guidance and the live destination URL and stream key shown for your channel. YouTube’s instructions can vary with the selected stream configuration, so consult Choose live encoder settings, bitrates, and resolutions and Create a YouTube live stream with an encoder rather than treating the offline example as a ready-to-run live command.
- Open YouTube’s live control room and create or select the intended live stream.
- Use the stream destination details and encoder settings provided for that stream. Keep the stream key private; do not paste it into public logs, screenshots, or shared commands.
- Configure FFmpeg’s live output to match YouTube’s current requirements for the selected encoder setup. The exact command also depends on the clip source, playlist behavior, audio, and chosen encoder.
- Start with a short private or otherwise appropriate test. Check subtitle timing, language, line breaks, fonts, and legibility at the final stream resolution before relying on a long-running broadcast.
There is no single command here that covers every playlist source, per-clip subtitle file, repeat or transition policy, hardware encoder, and channel configuration. A local sequence of clips with distinct subtitle files needs orchestration for clip changes and subtitle timing; a single -vf example does not implement that playlist logic. FFmpeg’s Documentation and Formats Documentation cover separate command-line and output-format concerns.
Rank #4
- Vilros Complete Starter Kit for Pi 4 Includes Raspberry Pi 4 Model B Board and all the accessories you need to get started.
- 9-PART KIT WILL HAVE YOU READY TO GET UP AND RUNNING: Kit Includes 1. Raspberry Pi 4 Model B Board 2. Case With Easy to connect Built-in fan 3. 64GB Micro SD card Preloaded with RP OS 4. Vilros Pi 4 Compatible Power Supply with Inline on/off switch (power supply color may vary white/black) 5. Micro HDMI to Standard HDMI cable (5ft) 6. Micro SD to USB adapter to reflash card if desired 7. Neoprene Storage Bag to store all parts when not in use 8. Set of 4 Heatsinks 9. Vilros QuickStart Guide instruction booklet for Pi 4
- PASSIVE & ACTIVE COOLING: The included case is well-vented and the kit also includes a set of heatsinks with thermal stickers for easy application and a pre-installed fan to keep the board cool in any use.
- CONVENIENT ACCESSORIES: The power supply features an inline on/off switch neoprene bag that holds and protects all the parts when not in use and the QuickStart guide is updated and written for Raspberry Pi 4.
- IMPORTANT: Kit does NOT include Keyboard, Mouse or Monitor
Hard subtitles or selectable captions?
| Choice | What viewers get | When it fits |
|---|---|---|
| Burned subtitles | Text is always visible in the rendered image; viewers cannot toggle it off, choose another language, or restyle it as a caption track. | Use when the text must appear consistently in the picture. |
| Separate caption track | Viewers can use the caption controls available in the player, rather than seeing text permanently baked into every frame. | Use when accessibility, language choice, or viewer control matters; retain or provide captions through YouTube’s relevant caption workflow as well. |
ASS can carry richer styling than a plain text subtitle format, while rendered appearance also depends on the selected format, available fonts, and filter options. Whichever approach you choose, check the result in the actual output resolution and playback context.
Troubleshoot common subtitle and stream problems
“No such filter: subtitles”
Your FFmpeg build may not include the filter or libass support. Check the build’s available filters and use a build configured with --enable-libass, as required by the filter documentation.
Best Value
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- CanaKit 3.5A USB-C Power Supply with Noise Filter (UL Listed) specially designed for the Raspberry Pi 4 (5-foot cable)
- CanaKit USB-C PiSwitch (On/Off Power Switch)
- Set of 3 Aluminum Heat Sinks for the Raspberry Pi 4
Subtitles are missing or the wrong language appears
Verify the external subtitle filename and path, or inspect the input’s subtitle streams and select the intended stream. Confirm the chosen stream actually contains text subtitles and check its language and timing.
The filter expression fails on a path or style value
Quote the filter expression and escape characters for both your shell and FFmpeg’s filtergraph syntax. The correct escaping depends on the shell and operating system, so do not assume one quoting pattern works everywhere.
Encoding is unexpectedly slow or CPU-heavy
Burning text requires processing video frames and encoding the filtered result; copying compressed video cannot apply a visual filter. Throughput depends on the source, resolution, encoder, and hardware. No universal minimum hardware requirement or speed figure is established here.
YouTube does not receive or accept the stream
Check the current encoder requirements and confirm that FFmpeg is sending to the destination configured in the channel’s live control room. A local or HLS playlist output is not automatically YouTube Live ingest; use the YouTube encoder workflow and the settings for the intended stream.
Or let it run in the cloud
If you have prepared a video with subtitles burned in, StreamNeo can keep that uploaded video or playlist looping as a YouTube live stream from the cloud: upload the video, add your YouTube stream key, and go live. Nothing has to stay on at home; it plays the uploaded video rather than going live from a camera. Every slot streams the uploaded quality up to 4K 60fps at one flat price per slot, with no re-encode or quality tiers, and automatically recovers if YouTube drops the stream. The first day is free with no card. Monthly pricing is $9.99 per month.
Quick Recap
Start your free first day with StreamNeo.
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.

