Convert TS to FLV — Free Online Tool

Convert MPEG-2 Transport Stream (TS) files to Flash Video (FLV) format, re-encoding the video with H.264 (libx264) and audio with AAC — the codec combination historically required for RTMP-based Flash streaming and legacy web video workflows. This tool runs entirely in your browser using FFmpeg.wasm, so no files leave your machine.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

TS files are broadcast containers that often carry H.264 or H.265 video alongside AAC, AC3, or MP3 audio, sometimes with multiple audio tracks and embedded subtitles. FLV is a far more constrained container: it only supports H.264 or the older Sorenson Spark video codec, and only AAC or MP3 audio — with no support for multiple audio tracks, subtitles, or chapters. During this conversion, the video stream is re-encoded to H.264 using libx264 (even if the TS source is already H.264, because the packetization and bitstream structure must be adapted for FLV's container format). The audio is re-encoded to AAC at 128kbps. Any secondary audio tracks, subtitle streams, or broadcast metadata present in the TS file are dropped, since FLV cannot carry them.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary. When run in the browser, this executes the FFmpeg.wasm WebAssembly build, which is functionally equivalent to the desktop FFmpeg CLI and produces identical output.
-i input.ts Specifies the input MPEG-2 Transport Stream file. FFmpeg will demux the TS container, identifying and separating the video elementary stream, the primary audio stream, and any additional streams (subtitles, secondary audio) before processing.
-c:v libx264 Re-encodes the video stream using the libx264 H.264 encoder, which is one of only two video codecs FLV supports. This is required regardless of whether the TS source already contains H.264, because the bitstream must be repackaged in AVCC format for FLV compatibility.
-c:a aac Transcodes the audio stream to AAC, which is essential when the TS source contains AC3, MP3, FLAC, Opus, or any other audio codec that FLV cannot carry. AAC is the preferred audio codec for FLV and is required for RTMP streaming workflows.
-crf 23 Sets the Constant Rate Factor for the libx264 encode to 23, which is the default and represents a good balance between visual quality and file size. Lower values (e.g., 18) yield better quality at larger file sizes; higher values (e.g., 28) reduce file size with more visible compression in the resulting FLV.
-b:a 128k Sets the AAC audio bitrate to 128kbps, which is a standard quality level for stereo audio in FLV streaming contexts. If your TS source contains high-quality multi-channel audio like AC3 5.1, this will be downmixed to stereo and compressed to this bitrate.
output.flv Specifies the output filename and tells FFmpeg to use the FLV container format based on the .flv extension. FFmpeg will mux the re-encoded H.264 video and AAC audio into a Flash Video container, discarding any subtitle tracks or secondary audio streams from the original TS file.

Common Use Cases

  • Preparing a broadcast-captured TS recording for upload to an older RTMP-based streaming server or Flash Media Server that requires FLV input
  • Converting a DVR-recorded transport stream to FLV for playback in a legacy Flash-based video player embedded in an older web application
  • Archiving segments from a live broadcast TS feed into FLV files for use with older video management systems that predate HTML5 video support
  • Repackaging a TS file from an HLS stream recording into FLV format to integrate with Flash-based CDN workflows or older Wowza configurations
  • Converting broadcast TS footage to FLV as a delivery format for a client whose video kiosk or digital signage system runs a Flash-based media player
  • Extracting a clean H.264/AAC stream from a multi-track broadcast TS file into a single-track FLV for simplified video editing ingestion in older NLE systems

Frequently Asked Questions

Yes, some quality loss is expected because the video must be fully re-encoded — even if the TS source already contains H.264 video. Each encode generation introduces compression artifacts. At the default CRF 23 setting, the quality loss is generally minimal and visually acceptable for most content, but it will never be identical to the source. If your TS file contains H.265 (HEVC) or VP9 video, the quality difference after transcoding to H.264 will depend heavily on the source bitrate and the CRF value you choose.
They are lost. FLV is a highly limited container that supports only a single audio stream and has no subtitle or chapter support whatsoever. The conversion will retain only the first (default) audio track from the TS file and discard all others. If your broadcast TS contains secondary language tracks or embedded DVB/teletext subtitles, you must extract those separately before converting — the FLV output will not include them.
No — native FLV playback is not supported in any modern browser since Adobe Flash Player was discontinued at the end of 2020. FLV files can still be played in desktop applications like VLC, and they remain relevant for server-side workflows involving RTMP streaming infrastructure. If your end goal is browser-based playback, MP4 (H.264/AAC) is a far more appropriate target format than FLV.
Although both TS and FLV can carry H.264 video, the way H.264 is packaged differs between them. TS uses an MPEG program stream structure with specific NAL unit packaging, while FLV wraps H.264 in AVCC format with a different header structure. FFmpeg cannot simply copy the raw H.264 bitstream from TS into FLV without re-encoding or at minimum applying bitstream filters, and in practice a full re-encode is the most reliable approach. This is why the command uses -c:v libx264 rather than -c:v copy.
Change the CRF value using the -crf flag. CRF controls the quality-to-file-size tradeoff for libx264: lower values produce higher quality and larger files (CRF 18 is near-visually lossless), while higher values reduce file size at the cost of quality (CRF 28–35 for smaller files with visible degradation). For example, replace '-crf 23' with '-crf 18' for higher quality output from your TS source. You can also adjust audio bitrate by changing '-b:a 128k' to '-b:a 192k' or '-b:a 96k' depending on your needs.
Yes, on the command line you can use a shell loop to process multiple files. On Linux or macOS, use: for f in *.ts; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.ts}.flv"; done. On Windows Command Prompt, use: for %f in (*.ts) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.flv". This is particularly useful for batch-converting recorded broadcast segments or HLS stream chunks captured as TS files.

Technical Notes

FLV's codec whitelist is narrow by modern standards: only libx264 (H.264) or the legacy Sorenson Spark FLV codec for video, and only AAC or MP3 for audio. This conversion always uses libx264 and AAC, which is the highest-quality option FLV supports and the combination required by RTMP servers like Adobe Media Server and Wowza for Flash-based live streaming. One important limitation: FLV does not support B-frames in some older implementations, but libx264 with default settings generally produces FLV-compatible output. Broadcast TS files frequently contain AC3 (Dolby Digital) audio — common in DVB and ATSC streams — which must be transcoded to AAC since FLV cannot carry AC3. Similarly, FLAC or multi-channel audio in the TS source will be downmixed and compressed to stereo AAC at the specified bitrate. FLV also has a 4GB file size ceiling, making it unsuitable for long-duration recordings — a consideration when converting lengthy broadcast TS files. Metadata preservation is minimal: FLV supports only basic onMetaData tags (duration, dimensions, framerate, bitrate), so any broadcast-specific metadata embedded in the TS container such as program IDs, service names, or EPG data will not carry over.

Related Tools