To stream a playlist with subtitles burned into the picture, list compatible media files in an FFmpeg concat-demuxer file, render the subtitle file with FFmpeg’s subtitles filter, encode the result, and send it to the YouTube Live server URL and stream key. The text becomes part of the video image—not a caption track viewers can switch off. The example below is a starting point, not a universal command: check your local FFmpeg build, media, subtitle encoding, and YouTube stream settings, then test before relying on it live.
What you need before starting
- FFmpeg and ffprobe installed. Your FFmpeg build needs the
subtitlesfilter and libass support; check withffmpeg -filtersandffmpeg -h filter=subtitles. Build options and local help vary by version. The online FFmpeg documentation is regenerated for the newest revision, so consult local documentation for older builds. FFmpeg subtitles filter documentation · FFmpeg documentation. - A playlist of media files with compatible stream layouts, codecs, dimensions, frame rates, and audio characteristics. The concat demuxer works best when the files are compatible; differences in stream lengths can cause timestamp gaps. FFmpeg concat demuxer documentation.
- A subtitle file, such as SRT, with timing that matches the video. Check its character encoding and whether the subtitle timing remains correct across file boundaries.
- A YouTube Live stream’s server URL and stream key from Live Control Room. Treat the key like a password: do not publish it or share it in a command that others can see. YouTube Help: set up a live stream with an encoder.
Prepare and check the playlist
Inspect the inputs
Use ffprobe to inspect each file’s video and audio streams, dimensions, frame rate, duration, and codecs. For example:
ffprobe -hide_banner -i "clip1.mp4"
Repeat for every file. Check that the videos can be concatenated without unexpected changes in stream layout or timestamps. If the files differ substantially, standardize them into matching intermediate files before using the concat demuxer; do not assume a playlist will play seamlessly just because every file opens individually.
Create the concat list
In a text file named playlist.txt, put one file entry per media file, in playback order. Paths are relative to the list file unless you use absolute paths.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
file 'clip1.mp4'
file 'clip2.mp4'
file 'clip3.mp4'
The concat demuxer reads the entries sequentially. Its timestamp adjustment can introduce gaps when component files do not have exactly the same length or compatible streams, so inspect transitions in a test rather than assuming continuous timing. See the concat demuxer documentation.
Burn the subtitles into the video
FFmpeg’s subtitles filter uses libass to draw subtitle text over the video before encoding. Because the text is rendered into frames, it remains visible in the resulting picture. The filter requires an FFmpeg build configured with --enable-libass and supporting libavcodec and libavformat functionality for subtitle conversion. Confirm local support before running a long stream.
Example command
Replace the placeholders with the playlist and subtitle paths, a YouTube RTMPS server URL, and your stream key. This illustrative command assumes the playlist has compatible H.264 video and audio streams, the subtitle file is readable, and your FFmpeg build provides the listed encoder and filter:
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
ffmpeg -re -f concat -safe 0 -i playlist.txt
-vf "subtitles=sub.srt"
-c:v libx264 -preset veryfast -b:v 8M -maxrate 8M -bufsize 16M
-r 30 -g 60 -keyint_min 60 -sc_threshold 0 -pix_fmt yuv420p
-c:a aac -b:a 128k -ar 44100
-f flv "rtmps://YOUR_SERVER_URL/YOUR_STREAM_KEY"
The command uses real-time input pacing with -re, the concat demuxer for the playlist, the subtitles filter for burned-in text, and H.264/AAC encoding for the outgoing stream. The video settings shown are an example for a 30 fps, 720p stream; set output dimensions explicitly with a filter such as scale=1280:720 if your input is not already the intended size. Keep the subtitle filter in the same video filter chain, for example -vf "scale=1280:720,subtitles=sub.srt". Do not copy the sample bitrate or dimensions without checking your output and YouTube’s current recommendations.
The example’s GOP settings target a two-second keyframe interval at 30 fps. For another frame rate, set the keyframe interval to approximately twice that frame rate to preserve a two-second interval. YouTube recommends two-second keyframes and says not to exceed four seconds. It also recommends constant bitrate (CBR); use an encoder configuration appropriate to your selected codec and confirm the actual output settings.
Subtitle paths, appearance, and encoding
- Use a subtitle path that FFmpeg can resolve from the current working directory, or provide an absolute path. Shell quoting and filter-graph quoting differ across operating systems, so adjust the example for your shell.
- To override styling, the filter supports
force_style; for example,subtitles=sub.srt:force_style='FontSize=24'. Available fonts and rendering can differ between systems. The filter also supportsfontsdirfor a font directory andcharencfor subtitle files that are not UTF-8. - If subtitles are embedded in a media file rather than supplied separately, use the filter’s subtitle-stream selection option to choose the intended stream. Check the local filter help for syntax and stream indexes.
- If the output aspect ratio has changed from the source, the filter’s
original_sizeoption can help preserve correct font scaling. Check the FFmpeg filter documentation and preview the result at the intended output size.
These options are documented in the FFmpeg subtitles filter reference. Always preview a short output locally: clipped text, wrong fonts, unreadable placement, or mismatched timing are easier to fix before going live.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Choose YouTube ingest settings and connect
YouTube’s encoder guidance supports RTMP/RTMPS ingestion, H.264, H.265/HEVC, or AV1 video, up to 60 fps, AAC or MP3 audio, and CBR. It recommends RTMPS for encrypted transport, a two-second keyframe frequency (no more than four seconds), and testing with representative sound and motion while monitoring stream health. Use the current settings page for your chosen codec and resolution: YouTube Help: encoder settings, bitrates, and resolutions.
Recommended H.264 ingest bitrates
The following are YouTube’s recommended H.264 ingestion bitrates on its encoder-settings page, accessed in 2026. They are recommendations, not guarantees of stream quality.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →| Output | YouTube-recommended H.264 bitrate |
|---|---|
| 720p at 30 fps | 8 Mbps |
| 720p at 60 fps | 8 Mbps |
| 1080p at 30 fps | 14 Mbps |
| 1080p at 60 fps | 17 Mbps |
Choose a resolution and bitrate your upload connection can sustain reliably. YouTube recommends running an upload speed test; a nominal connection speed alone does not establish that an uninterrupted stream will be stable.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Start and verify the stream
- In YouTube Live Control Room, create or open the stream and copy the server URL and stream key shown for it.
- Put those values into the FFmpeg output destination in place of the placeholders. Keep the key private.
- Start FFmpeg. In Live Control Room, wait for the preview and check stream health before relying on the broadcast. For a scheduled stream, you may also need to select Go live in Live Control Room.
- When finished, stop FFmpeg and end the stream in Live Control Room as appropriate. YouTube says streams under 12 hours are automatically archived. YouTube encoder setup and live-stream controls.
Burned-in subtitles or YouTube live captions?
| Approach | What viewers see | When it fits |
|---|---|---|
| Burned-in subtitles via FFmpeg | Text is part of each video frame and cannot be toggled off as a caption track. | You already have timed text and want it permanently visible in the picture. |
| YouTube live captions | Captions use YouTube’s separate caption-ingestion workflow rather than being rendered into the image. | You need a selectable caption track or are delivering captions through a supported caption pathway. |
YouTube documents embedded EIA 608/CEA 708 caption ingestion and supported software that sends captions over HTTP. Embedded caption delivery requires enabling Closed captions in stream setup and configuring the encoder for the supported format; YouTube’s documentation says it currently supports one caption track. The HTTP caption workflow uses a separate caption-ingestion URL and describes a 30- or 60-second broadcast delay; each stream entry point can have one caption feed. These are separate from an FFmpeg subtitle file drawn onto the picture. See YouTube Help: live captioning.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Looping and playlist edge cases
The concat demuxer plays the listed files in sequence; it does not by itself establish a reliable infinite playlist loop. FFmpeg’s video loop filter repeats frames, and its documented example loops one frame—not an entire playlist. Do not treat that filter example as a playlist-repeat solution. Select a playlist-level repeat strategy appropriate to your inputs and installed FFmpeg version, then verify end-of-file behavior in a test stream. FFmpeg loop filter documentation.
- Timestamp gaps or jumps: check file durations, timestamps, and stream compatibility; standardize the files if needed and test transitions.
- Subtitles stop or drift: confirm the SRT timeline covers the relevant media sequence. A single subtitle file may not align across multiple clips whose timelines restart at zero; prepare timed subtitles for the combined sequence or process the clips with correctly aligned subtitle timing.
- Filter not found: install or build FFmpeg with libass support, then recheck
ffmpeg -filtersand local filter help. - Missing characters or incorrect font: confirm subtitle encoding, try the filter’s
charencoption for non-UTF-8 input, and supply fonts withfontsdirif necessary. - Stream ends at the last file: the concat list is finite unless you deliberately add a verified repeat strategy. Test the end-of-file behavior before scheduling a long broadcast.
Test before a scheduled broadcast
- Render a short local sample with the playlist and subtitles; check transitions, text visibility, timing, font rendering, and audio.
- Run a short private or unlisted YouTube test with representative motion and sound, using the intended resolution, frame rate, codec, and bitrate.
- Check the YouTube preview and stream health, and adjust the output if the ingest settings, picture, audio, or connection are not right.
- For a long-running playlist, test the repeat strategy and observe what happens at file boundaries and at the playlist end.
YouTube’s guidance is direct: “Make sure to test before you start your live stream.” Refer to its encoder settings during setup and monitor stream health during the event.
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 minuteBest Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Or let it run in the cloud
If the goal is an always-on YouTube channel rather than learning FFmpeg operations, StreamNeo is a cloud service for keeping a YouTube stream live from uploaded videos. Upload a recording or build a playlist, add your YouTube stream key once, and go live; the cloud loops the videos, so your computer and home connection do not have to stay on. It plays uploaded videos, not a live camera feed.
- Nothing has to stay powered on at home.
- Each slot streams the uploaded file as made, up to 4K 60fps, at one price per slot; there are no quality tiers or re-encoding.
- It automatically recovers 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 plan details, or start your free day with StreamNeo.
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.




