October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
DocumentaryTube
Admit one · Blog

How to Burn Subtitles into Videos for an FFmpeg YouTube Playlist Stream

Burn subtitles into video frames with FFmpeg’s subtitles filter, then prepare the encoded output for a YouTube Live encoder workflow. Learn how to handle external and embedded subtitle tracks, local clip playlists, and common failures.
Opened Runtime6 min Written byDocumentaryTube Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use FFmpeg’s subtitles video filter to render subtitle text into the video frames, then encode the filtered video and send it to YouTube using the live-stream settings for your channel. You need an FFmpeg build with libass support. Because the subtitles become part of the picture, viewers cannot turn them off as a separate caption track.

“Playlist stream” can mean a local sequence of clips, a YouTube playlist of videos already published, or an HLS playlist. Those are different workflows. The steps below explain burning subtitles into a file and how to approach a local clip sequence; they do not assume that making an HLS playlist sends it to YouTube Live.

Choose the subtitle workflow before you encode

First establish where the subtitles are and what you mean by a playlist. An external SRT or ASS file can be supplied to the filter; subtitles embedded in a media file can be selected from that input. For a local playlist where each clip has its own subtitle file, each clip needs the correct subtitle selection and timing. A single filter expression should not be assumed to pick the right track or file for every clip.

  • One video with an external subtitle file: render the file with the subtitles filter.
  • One video with embedded subtitle tracks: identify the intended text track and select it explicitly.
  • A local sequence of clips with separate subtitle files: render each clip with its matching subtitles, then assemble the rendered clips using a compatible workflow. Check that the clips’ streams and settings are suitable for that assembly method.
  • A YouTube playlist: this is a collection of published YouTube videos, not an FFmpeg playlist input that automatically becomes a live stream.
  • An HLS playlist: this is a media delivery format. FFmpeg documents HLS generation and subtitle renditions, but creating HLS output does not by itself deliver it to YouTube Live.

See the FFmpeg Filters Documentation for the subtitle filter and the Formats Documentation for HLS and playlist-related formats.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
  • 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)

Burn subtitles into a video with FFmpeg

1. Check that your FFmpeg build has the filter

The subtitles filter requires an FFmpeg build configured with libass. Check the available filters with ffmpeg -filters and look for subtitles. FFmpeg’s filter documentation specifies the libass requirement; if the filter is unavailable, use a build that includes it.

2. Render an external SRT file

For a compatible input file named input.mp4 and an external subtitle file named subtitles.srt, this illustrates the basic rendering step:

Rank #2
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
  • 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
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" -c:v libx264 -c:a copy output.mp4

This is an offline example, not a tested command or a complete YouTube playlist configuration. It assumes that your FFmpeg build provides both the filter and the libx264 encoder, and that copying the input audio into the output container is compatible. If the audio cannot be copied, choose an audio encoding and output format that suit your source and delivery requirements.

3. Select an embedded subtitle stream deliberately

If the subtitle track is inside the media file, do not assume the first track is the language or type you want. Inspect the input’s streams, identify the subtitle stream, and pass the appropriate stream selection to the filter. FFmpeg’s subtitle-filter documentation covers selecting subtitle streams from an input; the exact selection depends on the file’s stream layout.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Raspberry Pi 4 Model B (2GB)
  • 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)

Confirm that the selected track contains text subtitles. A wrong stream index, wrong language, or non-text subtitle track can lead to missing or unexpected output.

4. Encode video; do not use video stream copy

The filter changes decoded video frames, so those frames must be encoded again. -c:v copy bypasses frame processing and cannot apply a visual subtitle filter. The example uses libx264; another encoder may be appropriate if it is available and meets your delivery requirements.

Rank #4
Vilros Raspberry Pi 4 Complete Starter Kit- Includes Raspberry Pi 4 Board, Fan Cooled Case, 64GB Preloaded Micro SD Card and More (4GB, Clear Transparent Case)
  • 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

5. Check appearance and timing before using the result

Review the output at the resolution you intend to stream. Check subtitle timing, language, line breaks, visibility, and font availability. If you use ASS styling, confirm that the rendered appearance is acceptable with the fonts and filter options available in your environment. A local review can catch subtitle problems before you rely on a long-running stream.

Handle a local playlist of clips

When every clip has a different subtitle file, the key requirement is matching each subtitle file to its clip and preserving timing at each clip boundary. The general filter example above does not specify a universal playlist command for per-clip subtitle files, repeats, transitions, and encoder choices.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
CanaKit Raspberry Pi 4 4GB Basic Kit with PiSwitch (4GB RAM)
  • 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
  1. Map the inputs: list each clip and the subtitle file or embedded track it should use. Verify language and timing for each pair.
  2. Render each clip with its matching subtitles: apply the filter to that clip and encode its video. Do not substitute video stream copy for the filtered video.
  3. Assemble the rendered clips: use a playlist or concatenation workflow compatible with the resulting files. Confirm that the chosen method handles their stream parameters and boundaries as intended.
  4. Test the complete sequence: review transitions and subtitle timing at the point where one clip ends and the next begins. Then configure the live encoder output separately.

FFmpeg documents playlist and HLS formats, but the right assembly method depends on how your clips are prepared. Do not treat an HLS output playlist as a YouTube Live ingest destination.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Send the encoded output to YouTube Live

For a live encoder workflow, configure FFmpeg’s outgoing format, video and audio codecs, and ingest destination according to YouTube’s current instructions and the live configuration shown for your channel. YouTube provides the current encoder settings, bitrates, and resolutions and instructions to create a live stream with an encoder. Follow those pages for the selected resolution and channel setup rather than assuming one set of encoder values suits every stream.

Use the stream URL and key provided in your YouTube live setup. Treat the stream key as a secret: do not publish it in a command, screenshot, script, or shared playlist. A complete command depends on the playlist design, codecs, output format, and YouTube configuration, so the offline example above should not be used as if it were a universal live-stream command.

Hard subtitles or selectable captions?

Approach What viewers get Trade-off
Burn subtitles into the video Text is visible in the rendered frames. Viewers cannot switch it off, select another language, or restyle it as a separate caption track.
Provide a separate caption track Viewers can use the relevant YouTube caption controls. It is a separate caption workflow, not text permanently rendered into the video image.

Burn subtitles when fixed on-screen text is the intended presentation. If accessibility, viewer choice, or multiple languages matter, retain or provide a separate caption track through the relevant YouTube workflow as well.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshoot common failures

  • “No such filter: subtitles” or the filter is unavailable: check whether the installed FFmpeg build includes the filter and libass support. The filter requires a build configured with --enable-libass.
  • Subtitles are missing or the wrong language appears: verify the external filename and path, or inspect the input’s subtitle streams and select the intended text track explicitly.
  • Filter expression or path parsing fails: quote the filter expression and escape special characters as required by both your shell and FFmpeg’s filtergraph syntax. Quoting rules vary across shells and operating systems.
  • Encoding is unexpectedly slow or CPU-heavy: filtering requires processing video frames and encoding the result; copying the compressed video cannot apply the filter. Actual throughput depends on the source, resolution, encoder, and hardware.
  • YouTube does not receive or accept the stream: check the current YouTube encoder guidance and the destination URL and key in your channel’s live control room. The correct full command depends on the playlist and output configuration.
  • Subtitles drift, overlap, or look wrong at a boundary: inspect the affected source clip and subtitle timing, then test the assembled sequence at its final output resolution before relying on it for an extended stream.

Or let it run in the cloud

If your goal is to keep a YouTube playlist live without leaving an FFmpeg process and computer running at home, StreamNeo is a cloud alternative: upload a recording or build a playlist, add your YouTube stream key once, and go live. It plays uploaded videos, not a live camera feed.

Quick Recap

Bestseller No. 1
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
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
$159.99
Bestseller No. 2
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
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
$92.97
Bestseller No. 3
Raspberry Pi 4 Model B (2GB)
Raspberry Pi 4 Model B (2GB)
Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz; 1GB, 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
$83.00
Bestseller No. 5
CanaKit Raspberry Pi 4 4GB Basic Kit with PiSwitch (4GB RAM)
CanaKit Raspberry Pi 4 4GB Basic Kit with PiSwitch (4GB RAM)
Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM); CanaKit USB-C PiSwitch (On/Off Power Switch)
$124.99
  • Nothing has to stay on at home; StreamNeo loops the uploaded video or playlist from the cloud and automatically recovers if YouTube drops the stream.
  • Each slot streams your upload as made, up to 4K 60fps, at one flat price per slot, with no re-encode or quality tiers.
  • The first day is free with no card, one free day per account. Monthly: $9.99 per month.

See StreamNeo for details, or start your free 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Screening Room

  1. How to Migrate a 24/7 YouTube Stream to a New VPSAdmit one · BlogHow to Migrate a 24/7 YouTube Stream to a New VPSOpened04 OCT 2026Runtime6 min
  2. How to Run a YouTube Playlist on a Headless Linux Server—and Broadcast It LiveAdmit one · BlogHow to Run a YouTube Playlist on a Headless Linux Server-and Broadcast It LiveOpened04 OCT 2026Runtime6 min
  3. How to Make a 24/7 Indian Music YouTube Stream Restart After a Server RebootAdmit one · BlogHow to Make a 24/7 Indian Music YouTube Stream Restart After a Server RebootOpened04 OCT 2026Runtime6 min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.