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.
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/flvFull skill: 166 linesYou 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
| Property | Details |
|---|---|
| Container | Flash Video (FLV) / F4V |
| File extensions | .flv, .f4v (MPEG-4 based variant) |
| Video codecs | Sorenson Spark (H.263), VP6, VP6 with alpha, Screen Video, H.264 (F4V) |
| Audio codecs | MP3, ADPCM, Nellymoser, Speex, AAC (F4V), PCM |
| Max resolution | No strict limit; commonly up to 1920x1080 |
| Frame rates | Typically 15–30 fps; variable frame rate supported |
| Bit depth | 8-bit |
| Subtitle support | AMF-based cue points (not standard subtitle tracks) |
| Metadata | onMetaData AMF structure (duration, width, height, bitrate, etc.) |
| MIME type | video/x-flv |
| Streaming protocols | RTMP (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
| Platform | Support |
|---|---|
| Browsers | Not supported (Flash Player removed from all browsers) |
| Windows | VLC, mpv, PotPlayer |
| macOS | VLC, IINA |
| Linux | VLC, mpv, FFmpeg |
| Android | VLC for Android |
| iOS | VLC for iOS |
| Editing software | Most NLEs can import FLV; none export to it |
| Streaming | RTMP (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 copyto 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. Useffmpeg -i broken.flv -c copy -f flv fixed.flvto regenerate metadata, orflvmetafor 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) orffmpeg -i input.flv -vn -c:a aac output.m4afor 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
ffprobebefore 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 +genptsto regenerate timestamps when remuxing.
Install this skill directly: skilldb add file-formats-skills
Related Skills
GeoJSON
GeoJSON geographic data format — a JSON-based format for encoding geographic features with geometry and properties, standardized as RFC 7946.
Animated GIF
Animated GIF is the classic bitmap animation format using the GIF89a specification, supporting frame-based animation with palette-limited color and transparency.
GIF Image Format
GIF is a bitmap image format supporting up to 256 colors per frame, widely known for its animation capabilities and used extensively for short loops, reactions, and simple web graphics.
glTF/GLB 3D Web Format
The glTF and GLB 3D formats — Khronos Group
GraphQL
GraphQL schema definition language and query files — a typed API query language and schema system for defining data graphs and client-driven data fetching.
GZIP Compression
The GZIP compression format — the ubiquitous single-file compressor built on DEFLATE, essential for tar.gz archives, HTTP content encoding, and Unix/Linux workflows.