Convert FLV to TS — Free Online Tool

Convert FLV (Flash Video) files to MPEG-2 Transport Stream (TS) format, re-encoding the video with H.264 (libx264) and audio with AAC — producing a broadcast-compatible, HLS-ready container that works long after Flash Player reached end-of-life. TS is widely used in live streaming pipelines and broadcast television, making this conversion ideal for moving legacy Flash content into modern infrastructure.

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

FLV files typically carry H.264 video and AAC or MP3 audio inside Adobe's proprietary container. During this conversion, the video stream is re-encoded using libx264 at CRF 23 (a perceptually good default quality) and the audio is encoded to AAC at 128k bitrate inside an MPEG-2 Transport Stream container. Unlike a simple remux, the container change is non-trivial: FLV uses a tag-based structure suited for progressive HTTP delivery, whereas TS uses fixed-size 188-byte transport packets designed for error-resilient transmission over broadcast and streaming networks. The TS container also unlocks features that FLV never supported, including multiple audio tracks, subtitle streams, and compatibility with HLS (HTTP Live Streaming) segmenters.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the open-source multimedia processing engine that performs the actual FLV-to-TS conversion in this tool via its WebAssembly (ffmpeg.wasm) build running entirely in your browser.
-i input.flv Specifies the input file as an FLV (Flash Video) container. FFmpeg detects the FLV format and demuxes the internal H.264 video and AAC or MP3 audio streams for processing.
-c:v libx264 Re-encodes the video stream using the libx264 H.264 encoder. Even if the FLV source already contains H.264 video, re-encoding is used here to ensure correct Annex B bitstream formatting required by the MPEG-2 TS container.
-c:a aac Encodes the audio stream to AAC using FFmpeg's native AAC encoder, which is the most compatible audio codec for MPEG-2 TS files used in HLS streaming and broadcast playout systems.
-crf 23 Sets the Constant Rate Factor for libx264 to 23, a perceptually transparent quality level for most video content. Lower values (e.g., 18) produce higher quality at larger file sizes; higher values (e.g., 28) reduce file size with more visible compression.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, which is a standard quality level for stereo audio in streaming contexts — sufficient for speech-heavy content like webinars or lectures originally recorded in FLV.
output.ts Specifies the output filename with the .ts extension, which signals FFmpeg to use the MPEG-2 Transport Stream muxer and write a properly structured TS file with PAT/PMT tables suitable for broadcast and HLS workflows.

Common Use Cases

  • Ingesting archived Flash-era video content into an HLS streaming pipeline, where TS segments are the native intermediate format before being split by tools like ffmpeg's hls muxer.
  • Preparing legacy FLV recordings from older screen-capture or web-streaming software for broadcast playout systems that require MPEG-2 Transport Stream input.
  • Converting FLV video downloads from early YouTube or Twitch archives into a TS format compatible with modern IPTV middleware and set-top boxes.
  • Feeding FLV source material into a video-on-demand encoding workflow that expects TS as its ingest format before transcoding to adaptive bitrate ladders.
  • Preserving old Flash-based e-learning or webinar recordings in a container format that does not depend on Adobe Flash Player for playback and remains decodable by broadcast-grade tools.
  • Preparing FLV conference or lecture recordings for upload to platforms or CDNs that accept TS as a live-stream ingest format.

Frequently Asked Questions

Yes, because both the video and audio are re-encoded rather than copied. The FLV container often already holds an H.264 video stream, so transcoding it again through libx264 at CRF 23 introduces a second generation of lossy compression. For most content the difference is imperceptible at CRF 23, but if you need the highest fidelity, lower the CRF value (e.g., to 18 or 15) in the FFmpeg command to increase quality at the cost of a larger file.
It is technically possible to stream-copy an H.264 track from FLV to TS using '-c:v copy', and doing so would avoid quality loss and be much faster. However, FLV stores H.264 in a slightly different packaging (AVCC byte-stream format with FLV-specific tag headers) that must be converted to Annex B format for TS. FFmpeg handles this automatically when you re-encode, but if you attempt a copy you must ensure FFmpeg correctly rewrites the bitstream headers, which it generally does — you can try '-c:v copy -c:a copy' if your FLV source has compatible AAC audio.
Yes — the MPEG-2 Transport Stream container supports subtitle streams (such as DVB subtitles or Teletext), which FLV never supported. However, this converter works from an FLV source that contains no subtitle data, so no subtitle track will appear in the output. If you later want to mux subtitles into a TS file, you would need a separate subtitle source and an additional FFmpeg command.
A single monolithic TS file is not itself an HLS segment, but it is in exactly the right format to be segmented by FFmpeg's HLS muxer or tools like Apple's mediafilesegmenter. HLS requires TS-formatted segments paired with an M3U8 playlist. Once you have the TS output from this converter, you can run FFmpeg with '-f hls' to split it into the fixed-duration segments that HLS players expect.
To adjust video quality, change the '-crf' value: lower numbers (e.g., 18) mean higher quality and larger file size, while higher numbers (e.g., 28) mean smaller files with more compression. To adjust audio quality, change the '-b:a' value, for example to '192k' or '256k' for better audio fidelity. The TS container supports audio bitrates up to 320k with AAC, giving you more headroom than the original FLV source may have had.
Yes. On Linux or macOS, you can use a shell loop: 'for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.flv}.ts"; done'. On Windows Command Prompt, use 'for %f in (*.flv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.ts"'. This is particularly useful for converting large archives of Flash-era recordings in one pass.

Technical Notes

FLV was designed specifically for Adobe Flash Player delivery over HTTP, and its internal structure — a sequence of tagged packets with inline timestamps — made it convenient for progressive download but poorly suited for broadcast or live streaming infrastructure. The MPEG-2 Transport Stream format solves this with a fixed 188-byte packet structure that is robust to transmission errors and supports random-access seeking, multiple program streams, and PCR (Program Clock Reference) timestamps required for synchronized playout. When FFmpeg writes the TS output, it sets up a single-program transport stream (SPTS) with a PAT and PMT table, which is the standard expectation for streaming and broadcast tools. One important limitation: FLV does not support chapters or multiple audio tracks, so none of that metadata carries over — not because TS lacks the capability (it supports multiple audio tracks), but because there is nothing in the FLV source to extract. Additionally, FLV files sometimes carry onMetaData script tags with duration, frame rate, and keyframe index information; this metadata is not preserved in the TS output, though the actual video and audio content is fully retained. File sizes for the TS output will typically be slightly larger than the FLV source at equivalent quality settings, partly due to TS packet padding overhead and partly due to the re-encoding process.

Related Tools