.FLV Flash Video
.flv

Flash Video

Convert FLV to MP4, WebM, or GIF directly in your browser — no upload, no server, no quality loss. FileDex uses FFmpeg WASM to transcode Flash Video locally on your device, preserving your original video and audio streams.

بنية الصيغة
FLV header 9B
Meta onMetaData
Tags video + audio
فيديوFlashH.264 / VP62003Deprecated
بواسطة FileDex

ملفاتك لا تغادر جهازك

أسئلة شائعة

Can I play FLV files in Chrome or Firefox?

No. All major browsers removed Flash Player support in January 2021. FLV files cannot play natively in any modern browser. Convert to MP4 or WebM using FileDex to restore browser playback via HTML5 video.

Will converting FLV to MP4 lose quality?

If your FLV contains H.264/AAC streams, FileDex can remux to MP4 with zero quality loss — the streams transfer without re-encoding. FLV files using older codecs like Sorenson Spark or VP6 require transcoding, which introduces minimal quality reduction at CRF 20.

How do I check what codec my FLV file uses?

Run ffprobe -v error -show_streams input.flv in a terminal. Look for the codec_name field — h264 means you can remux losslessly, while flv1 (Sorenson Spark) or vp6f requires transcoding.

Why are FLV files still common if Flash is dead?

Millions of FLV files remain in media archives, old CMS platforms, and downloaded YouTube videos from pre-2010. These files are fully playable via VLC or FFmpeg but need conversion to MP4 or WebM for web embedding or mobile playback.

ما يميز .FLV

Flash Video became the dominant web video format between 2005 and 2012, powering YouTube's original player, Hulu's launch, and countless embedded video widgets across the internet. The format was designed for Adobe Flash Player, which at its peak was installed on 98% of desktop browsers. When Steve Jobs refused to support Flash on the iPhone in 2010, the format's decline began. HTML5 <video> with MP4/WebM replaced it. Adobe officially ended Flash Player support in December 2020.

اكتشف التفاصيل التقنية

Tag-based binary structure

An FLV file starts with a 9-byte header: three bytes spelling FLV, one version byte (always 0x01), a flags byte indicating audio and/or video presence, and a 4-byte data offset pointing past the header. After the header, the file is a flat sequence of tags. FLV's tag-based structure stores each frame independently with a back-pointer to the previous tag size — this reverse-linked-list design enables seeking from any point in the file without an index. Each tag has an 11-byte header: one byte for type (audio 0x08, video 0x09, script data 0x12), three bytes for payload size, three bytes for timestamp, one byte for timestamp extension (giving 32-bit millisecond precision), and three bytes for stream ID (always 0).

The previous-tag-size field after every tag allows backward traversal. A player can jump to any byte, scan for a valid previous-tag-size boundary, and start reading forward from the next tag.

Codec constraints

FLV supports a narrow set of codecs compared to MP4 or MKV:

Track Supported Codecs Notes
Video Sorenson H.263, VP6, VP6 with alpha, AVC (H.264) H.264 added in FLV version 1, requires AVCDecoderConfigurationRecord in first video tag
Audio Linear PCM, ADPCM, MP3, Nellymoser, Speex, AAC AAC requires AudioSpecificConfig in first audio tag

H.264 in FLV uses AVCC format (length-prefixed NALUs), not Annex B (start-code-prefixed). This distinction matters when extracting raw H.264 streams — the NALU length prefix must be converted to start codes for standalone .264 files.

Script data and metadata

The first tag in most FLV files is a script data tag containing an onMetaData AMF (Action Message Format) object. This carries duration, video dimensions, frame rate, audio sample rate, encoder name, and other properties as key-value pairs. Players rely on this metadata for progress bars and seeking. If the metadata tag is missing or has incorrect duration, seeking breaks in most players.

FLV does not have a dedicated index structure. For seeking, Adobe introduced the keyframes object inside onMetaData, listing byte offsets and timestamps of each keyframe. Tools like FLVMeta and Yamdi inject this index after encoding.

Streaming performance

FLV was built for streaming. RTMP (Real Time Messaging Protocol) transports FLV tags directly over TCP, chunking them into 128-byte default fragments. This made live streaming with sub-second latency practical in 2008. A 720p stream at 2.5 Mbit/s with AAC audio at 128 kbit/s produces roughly 330 KB/s of FLV data with negligible container overhead — each tag header is just 15 bytes (11-byte header plus 4-byte back-pointer).

Modern relevance

FLV is effectively a legacy format. No major browser plays it natively. However, millions of FLV files still exist in archives, old CMS databases, and backup drives. Some live streaming infrastructure (notably older Wowza and nginx-rtmp setups) still ingests RTMP/FLV internally before transmuxing to HLS or DASH for delivery.

Converting FLV to MP4 is usually a remux operation when the source uses H.264 and AAC — no re-encoding needed, just repackaging the same compressed data into ISOBMFF atoms. FileDex handles this conversion directly in the browser, preserving the original bitstream quality.

المرجع التقني

نوع MIME
video/x-flv
Magic Bytes
46 4C 56 01 FLV signature followed by version byte.
المطوّر
Adobe Systems
سنة التقديم
2003
معيار مفتوح
لا
00000000464C5601 FLV.

FLV signature followed by version byte.

البنية الثنائية

An FLV file begins with a 9-byte header: 3-byte signature (FLV), 1-byte version (0x01), 1-byte type flags (bit 0 = video, bit 2 = audio), and a 4-byte big-endian data offset pointing to the first tag. The body consists of a sequence of FLV tags, each preceded by a 4-byte PreviousTagSize field. Each tag has an 11-byte header: 1-byte tag type (0x08 = audio, 0x09 = video, 0x12 = script data), 3-byte data size, 3-byte timestamp, 1-byte timestamp extension (upper 8 bits), and 3-byte stream ID (always 0). Script data tags at position 0 typically contain an onMetaData AMF object with duration, width, height, framerate, and a keyframes index for seeking.

OffsetLengthFieldExampleDescription
0x00 3 bytes Signature 46 4C 56 (FLV) File type identifier. Must be ASCII 'FLV'.
0x03 1 byte Version 01 FLV version. Always 0x01 in practice.
0x04 1 byte TypeFlags 05 Bitmask: bit 0 = video present, bit 2 = audio present. 0x05 = both audio and video.
0x05 4 bytes DataOffset 00 00 00 09 Big-endian offset to first FLV tag body. Always 9 for FLV version 1.
2002Macromedia acquires Sorenson Spark codec and develops Flash Video container for Flash Player 62003FLV format officially released with Flash MX; YouTube launches in 2005 using FLV exclusively2005Flash Player 8 adds VP6 codec support, improving FLV quality over Sorenson Spark2007Flash Player 9 Update 3 adds H.264/AAC support within FLV, bridging toward MP4 compatibility2010Apple refuses Flash on iOS; Steve Jobs publishes 'Thoughts on Flash' — begins the shift to HTML5 video2017Adobe announces Flash Player end-of-life for December 31, 20202020Flash Player discontinued; browsers remove Flash support entirely. FLV becomes a legacy-only format
Transcode FLV to MP4 with H.264/AAC ffmpeg
ffmpeg -i input.flv -c:v libx264 -crf 20 -preset medium -c:a aac -b:a 128k -movflags +faststart output.mp4

-crf 20 sets visually lossless quality for H.264. -preset medium balances encoding speed and compression. -movflags +faststart relocates the moov atom for progressive web playback. AAC audio at 128 kbps is transparent for most content.

Remux FLV to MP4 (H.264/AAC streams only) ffmpeg
ffmpeg -i input.flv -c copy -movflags +faststart output.mp4

-c copy performs stream copy — no re-encoding, no quality loss. Only works when the FLV already contains H.264 video and AAC audio. Completes in seconds regardless of file duration.

Probe FLV codec and metadata details ffprobe
ffprobe -v error -show_format -show_streams input.flv

Displays container format, stream codecs, bitrates, duration, and onMetaData fields. Use this to determine whether the FLV contains H.264 (remuxable) or Sorenson Spark/VP6 (requires transcode).

Batch convert all FLV files in a directory to MP4 ffmpeg
for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -crf 20 -c:a aac -movflags +faststart "${f%.flv}.mp4"; done

Bash loop iterates every .flv file in the current directory and transcodes each to MP4 with H.264/AAC. The ${f%.flv}.mp4 substitution replaces the extension while preserving the original filename.

FLV MP4 transcode lossy FLV files using Sorenson Spark or VP6 codecs cannot be remuxed into MP4 — the codecs are not valid in ISO BMFF containers. Transcoding to H.264/AAC in MP4 restores playback in all modern browsers, iOS, Android, and social media platforms that dropped Flash support entirely after 2020.
FLV WEBM transcode lossy WebM (VP9/Opus) provides better compression than H.264 at equivalent quality and is the preferred format for web delivery on Chrome and Firefox. Transcoding legacy FLV to WebM modernizes the codec while keeping the file open-source and royalty-free.
FLV GIF render lossy Short FLV clips from archived Flash content can be converted to animated GIF for embedding in messaging apps, social media posts, and documentation where video embedding is not supported.
FLV (H.264/AAC) MP4 remux lossless FLV files that already contain H.264 video and AAC audio streams (common from post-2007 Flash encoders) can be remuxed into MP4 without re-encoding. This preserves original quality and completes in seconds regardless of file size.
متوسط

نقاط الضعف

  • FLV files were historically delivered via Flash Player, which had a long history of critical vulnerabilities including arbitrary code execution (CVE-2015-0311, CVE-2018-4878) — even after Flash EOL, opening FLV in legacy players with Flash dependencies can expose systems
  • Malformed FLV tag headers with incorrect data size fields can trigger buffer over-read in parsers that do not validate tag boundaries before reading
  • Crafted onMetaData AMF objects with deeply nested structures or excessively long string values can cause stack overflow or heap exhaustion in AMF deserializers

الحماية: FileDex processes FLV files entirely in-browser using FFmpeg WASM in a sandboxed WebAssembly memory space. No file is uploaded to any server. The WASM sandbox prevents any malformed FLV data from accessing system memory or executing native code.

FFmpeg أداة
Primary tool for FLV conversion, supporting all FLV codecs
VLC Media Player أداة
Cross-platform player that handles FLV natively without plugins
HandBrake أداة
GUI-based video transcoder with FLV input support
flvdemux (FFmpeg) مكتبة
FFmpeg's FLV demuxer library for programmatic FLV parsing