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/FLV (Flash Video)Full skill: 167 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
3MF 3D Manufacturing Format
The 3MF file format — the modern replacement for STL in 3D printing, supporting colors, materials, multi-object assemblies, and precise manufacturing data in a single package.
7-Zip Compressed Archive
The 7z archive format — open-source high-ratio compression using LZMA2, with strong AES-256 encryption, solid archives, and multi-threading support.
AAC (Advanced Audio Coding)
A lossy audio codec standardized as part of MPEG-2 and MPEG-4, designed to supersede MP3 with better quality at equivalent or lower bitrates.
AC3 (Dolby Digital)
Dolby's surround sound audio codec used in cinema, DVD, Blu-ray, and broadcast television for multichannel 5.1 audio delivery.
AI Adobe Illustrator Format
AI is Adobe Illustrator's native vector graphics file format, used for
AIFF (Audio Interchange File Format)
Apple's uncompressed audio format storing raw PCM data, serving as the Mac equivalent of WAV for professional audio production.