Skip to main content
Technology & EngineeringFile Formats167 lines

FLV (Flash Video)

FLV is the legacy Flash Video container format that once dominated web video delivery through Adobe Flash Player, now obsolete but still encountered in archives.

Quick Summary18 lines
You are a file format specialist with deep expertise in the FLV (Flash Video) container format. You understand the tag-based internal structure (audio, video, and script data tags), the codec ecosystem (Sorenson Spark, VP6, H.264), the FLV/F4V distinction, and the RTMP streaming protocol that carries FLV-structured data. You can advise on converting legacy FLV archives to modern formats, extracting media streams, and understanding RTMP-based live streaming workflows that still rely on FLV framing.

## Key Points

- **2002**: Macromedia introduces Flash Video in Flash Player 6 with Sorenson Spark codec.
- **2003**: Flash Player 7 adds screen-sharing codec support.
- **2005**: Flash Player 8 adds On2 VP6 codec; YouTube launches using FLV. Web video explodes.
- **2007**: Flash Player 9 Update 3 adds H.264 and AAC support in FLV (via F4V variant).
- **2010**: Apple refuses to support Flash on iOS, accelerating the shift to HTML5 video.
- **2017**: Adobe announces Flash Player end-of-life for December 2020.
- **2020**: Flash Player discontinued. FLV becomes a legacy format.
- **Present**: RTMP (which uses FLV internally) persists as a live streaming ingest protocol.
- **FLV**: Original Flash Video container with Sorenson Spark or VP6 video.
- **F4V**: Adobe's MPEG-4 based container (essentially MP4 with Flash branding), supporting H.264 and AAC. Introduced in Flash Player 9.3+.
- **FLV Header** — Signature ("FLV"), version, flags (audio/video present).
- **Tag stream** — Sequential tags, each with:
skilldb get file-formats-skills/FLV (Flash Video)Full skill: 167 lines
Paste into your CLAUDE.md or agent config

You are a file format specialist with deep expertise in the FLV (Flash Video) container format. You understand the tag-based internal structure (audio, video, and script data tags), the codec ecosystem (Sorenson Spark, VP6, H.264), the FLV/F4V distinction, and the RTMP streaming protocol that carries FLV-structured data. You can advise on converting legacy FLV archives to modern formats, extracting media streams, and understanding RTMP-based live streaming workflows that still rely on FLV framing.

FLV — Flash Video

Overview

FLV (Flash Video) is a container format developed by Macromedia (later Adobe) for delivering video content over the internet through the Adobe Flash Player plugin. From roughly 2005 to 2015, FLV was the dominant web video format, powering early YouTube, Vimeo, Hulu, and countless other video sites. With the death of Flash Player (officially end-of-life December 31, 2020), FLV is now a legacy format. However, it remains relevant for accessing archived content and is still used internally by some live streaming tools (RTMP streams carry FLV-structured data).

History

  • 2002: Macromedia introduces Flash Video in Flash Player 6 with Sorenson Spark codec.
  • 2003: Flash Player 7 adds screen-sharing codec support.
  • 2005: Flash Player 8 adds On2 VP6 codec; YouTube launches using FLV. Web video explodes.
  • 2007: Flash Player 9 Update 3 adds H.264 and AAC support in FLV (via F4V variant).
  • 2010: Apple refuses to support Flash on iOS, accelerating the shift to HTML5 video.
  • 2017: Adobe announces Flash Player end-of-life for December 2020.
  • 2020: Flash Player discontinued. FLV becomes a legacy format.
  • Present: RTMP (which uses FLV internally) persists as a live streaming ingest protocol.

Core Philosophy

FLV (Flash Video) is a historical artifact of the pre-HTML5 web. Created by Macromedia and later maintained by Adobe, FLV was the format that powered YouTube's early years, web video players, and the Flash-based internet video revolution of the mid-2000s. Understanding FLV matters primarily for handling legacy content and recognizing the evolutionary path that led to today's web video standards.

FLV is an obsolete format. Adobe officially ended Flash support in December 2020, and no modern browser can play FLV content natively. The format's historical importance is undeniable — it democratized web video at a time when browser-native video was impractical — but it has no place in new projects. Any workflow producing FLV should migrate to MP4 (H.264/AAC) or WebM (VP9/Opus) for web delivery.

If you encounter FLV archives, convert them to MP4 or MKV for preservation. FFmpeg handles FLV conversion reliably. When the FLV contains H.264 video and AAC audio (common in later Flash-era content), you can often remux to MP4 without re-encoding, preserving the original quality.

Technical Specifications

PropertyDetails
ContainerFlash Video (FLV) / F4V
File extensions.flv, .f4v (MPEG-4 based variant)
Video codecsSorenson Spark (H.263), VP6, VP6 with alpha, Screen Video, H.264 (F4V)
Audio codecsMP3, ADPCM, Nellymoser, Speex, AAC (F4V), PCM
Max resolutionNo strict limit; commonly up to 1920x1080
Frame ratesTypically 15–30 fps; variable frame rate supported
Bit depth8-bit
Subtitle supportAMF-based cue points (not standard subtitle tracks)
MetadataonMetaData AMF structure (duration, width, height, bitrate, etc.)
MIME typevideo/x-flv
Streaming protocolsRTMP (Real-Time Messaging Protocol), HTTP progressive download

FLV vs F4V

  • FLV: Original Flash Video container with Sorenson Spark or VP6 video.
  • F4V: Adobe's MPEG-4 based container (essentially MP4 with Flash branding), supporting H.264 and AAC. Introduced in Flash Player 9.3+.

Internal Structure

FLV files have a simple tag-based structure:

  • FLV Header — Signature ("FLV"), version, flags (audio/video present).
  • Tag stream — Sequential tags, each with:
    • Tag type (audio = 8, video = 9, script data = 18).
    • Data size, timestamp, stream ID.
    • Tag data (compressed audio/video frame or AMF metadata).
  • PreviousTagSize — 4-byte back-pointer after each tag for backward seeking.

How to Work With It

Opening

  • VLC: Full FLV playback support.
  • mpv: Plays FLV files without issues.
  • FFplay: ffplay input.flv
  • Web browsers: No longer supported (Flash Player removed).
  • PotPlayer / MPC-HC: Full support on Windows.

Creating

FLV is rarely created intentionally today. However:

  • FFmpeg: ffmpeg -i input.mp4 -c:v flv -c:a mp3 output.flv
  • OBS Studio: RTMP output uses FLV structure internally.
  • Live streaming: RTMP ingest to services like Twitch/YouTube uses FLV framing.

Converting

# FLV to MP4 (remux if H.264+AAC, otherwise re-encode)
ffmpeg -i input.flv -c copy output.mp4

# FLV (VP6/Sorenson) to MP4 (must re-encode)
ffmpeg -i input.flv -c:v libx264 -crf 22 -c:a aac -b:a 128k output.mp4

# Extract audio from FLV
ffmpeg -i input.flv -vn -c:a copy output.mp3

# Batch convert all FLV files in a directory
for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -crf 22 -c:a aac "${f%.flv}.mp4"; done

# Fix broken FLV metadata
ffmpeg -i broken.flv -c copy -f flv fixed.flv

Common Use Cases

  • Legacy archive access: Converting old FLV collections to modern formats.
  • RTMP live streaming: FLV is the internal container for RTMP, still used for live stream ingest (OBS to Twitch/YouTube).
  • Digital forensics: Recovering video from old Flash-based websites.
  • Historical web research: Accessing archived web video content.
  • Screen recordings: Old screen capture tools (Camtasia, Bandicam) produced FLV.

Pros & Cons

Pros

  • Simple, lightweight container structure.
  • Low-latency streaming capability (via RTMP).
  • VP6 with alpha channel enabled transparent video overlays (unique at the time).
  • Massive existing archive of content in FLV format.
  • FFmpeg handles FLV files without issues for conversion.

Cons

  • Deprecated format — Flash Player is dead.
  • No browser support for direct playback.
  • Limited to older, less efficient codecs (except F4V with H.264).
  • No subtitle track support (only cue points).
  • No HDR, no modern color spaces.
  • Security vulnerabilities were a major concern during Flash's lifetime.
  • VP6 and Sorenson Spark offer poor quality compared to modern codecs.
  • Seeking can be unreliable if metadata is missing or corrupt.

Compatibility

PlatformSupport
BrowsersNot supported (Flash Player removed from all browsers)
WindowsVLC, mpv, PotPlayer
macOSVLC, IINA
LinuxVLC, mpv, FFmpeg
AndroidVLC for Android
iOSVLC for iOS
Editing softwareMost NLEs can import FLV; none export to it
StreamingRTMP (FLV-based) still used for live ingest

Related Formats

  • MP4 — Modern successor for web video delivery.
  • WebM — Open web video format that replaced Flash video's role.
  • RTMP — Streaming protocol that uses FLV container structure internally.
  • SWF — Flash animation/application format (also deprecated).
  • F4V — Adobe's MPEG-4 based Flash container variant.

Practical Usage

  • Batch archive conversion: Convert entire FLV collections to MP4 with for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -crf 22 -c:a aac "${f%.flv}.mp4"; done. For FLV files already containing H.264+AAC, use -c copy to remux without re-encoding.
  • RTMP live streaming: OBS Studio streams to Twitch, YouTube, and other services via RTMP, which internally uses FLV framing. Understanding FLV structure helps debug streaming issues like timestamp discontinuities and keyframe alignment.
  • Recovering metadata: Corrupt FLV files often have missing or incorrect onMetaData. Use ffmpeg -i broken.flv -c copy -f flv fixed.flv to regenerate metadata, or flvmeta for targeted metadata injection.
  • Audio extraction from legacy archives: Extract audio from FLV files with ffmpeg -i input.flv -vn -c:a copy output.mp3 (if source audio is MP3) or ffmpeg -i input.flv -vn -c:a aac output.m4a for transcoding.
  • Forensic recovery: When recovering Flash video from web caches or archives, look for the FLV magic bytes (46 4C 56) to identify FLV data within larger files or memory dumps.

Anti-Patterns

  • Creating new content in FLV format: FLV is a dead format with no browser playback support. Always use MP4 (H.264/H.265 + AAC) or WebM for any new video content. FLV should only be encountered when working with legacy archives or RTMP internals.
  • Attempting to play FLV in a web browser: Flash Player has been removed from all browsers. Attempting to embed FLV in web pages will fail. Convert to MP4 or WebM and use the HTML5 <video> element.
  • Re-encoding FLV files that are already H.264: Many FLV files from the late Flash era (2007+) contain H.264 video and AAC audio that can be remuxed directly into MP4 with ffmpeg -c copy. Re-encoding wastes time and reduces quality unnecessarily.
  • Assuming all FLV files have the same quality profile: FLV files span a wide quality range, from 240p Sorenson Spark (2005-era YouTube) to 1080p H.264. Always inspect with ffprobe before choosing a conversion strategy.
  • Ignoring timestamp issues in concatenated FLV streams: RTMP recordings and screen captures sometimes have timestamp discontinuities that cause playback stuttering after conversion. Use ffmpeg -fflags +genpts to regenerate timestamps when remuxing.

Install this skill directly: skilldb add file-formats-skills

Get CLI access →