Flash Video is a container file format used to deliver digital video content (e.g., TV shows, movies, etc.) over the Internet using Adobe Flash Player version 6 and newer. Flash Video content may also be embedded within SWF files. There are two different Flash Video file formats: FLV and F4V. The audio and video data within FLV files are encoded in the same way as SWF files. The F4V file format is based on the ISO base media file format, starting with Flash Player 9 update 3. Both formats are supported in Adobe Flash Player and developed by Adobe Systems. FLV was originally developed by Macromedia. In the early 2000s, Flash Video was the de facto standard for web-based streaming video (over RTMP). Users include Hulu, VEVO, Yahoo! Video, metacafe, Reuters.com, and many other news providers.

Flash Video FLV files usually contain material encoded with codecs following the Sorenson Spark or VP6 video compression formats. public releases of Flash Player (collaboration between Adobe Systems and MainConcept) also support H.264 video and HE-AAC audio. All of these compression formats are restricted by patents. Flash Video is viewable on most operating systems via the Adobe Flash Player and web browser plugin or one of several third-party programs. Apple's iOS devices, along with almost all other mobile devices, do not support the Flash Player plugin and so require other delivery methods such as provided by the Adobe Flash Media Server.Adobe Flash Media Server

History

The 2002 release of Flash Player 6 added support for video in the SWF file format. The 2003 release of Flash Player 7 added direct support for the FLV file format. Because of restrictions in the FLV file format, Adobe Systems created new file formats in 2007, based on the ISO base media file format (MPEG-4 Part 12). In this way, the F4V format shares a common base with the MP4 format, which is why F4V is sometimes informally called "Flash MP4". Flash Player does not check the filename extension but instead examines the file to determine the format of the thing created.Kaourantin.net (31 October 2007) Tinic Uro New File Extensions and MIME Types , Retrieved on 2009-08-03

The new file formats are very different from the older FLV file format. For example, F4V does not support Screen video, Sorenson Spark, VP6 video compression formats and ADPCM, or Nellymoser audio compression formats. Authors of Flash Player strongly encourage use of the new standard file format F4V (ISO base media file format) because it overcomes functional limits with the FLV structure when streaming H.264 or AAC, which is one reason Adobe Systems is moving away from the older FLV file structure. Since 2002, the initial format is Flash Video and the file suffix is .flv with a MIME derived Internet media type of video/x-flv.

The Adobe-branded file suffix .f4v was extended from 2007 to support the ISO base media file format using the same MIME derived Internet media type of video/mp4 as the Apple file suffix of .m4v and the general file suffix of .mp4. Adobe-branded file suffixes exist for .f4p which relates to media encrypted with their Adobe Access DRM scheme; .f4a and .f4b relate respectively to .m4a and .m4b with the same MIME derived Internet media type of audio/mp4.

SWF files published for Flash Player 6 and later versions are able to exchange audio, video, and data over RTMP connections with the Adobe Flash Media Server. One way to feed data to Flash Media Server is from files in the FLV file format. Flash Player can play SWF files created for Flash Player 7 and later versions in FLV format directly (MIME type video/x-flv). Flash Player can also play the new F4V file format, beginning with SWF files created for Flash Player 9 Update 3.

+ Support for audio and video compression formats in Flash Player and in Flash VideoAdobe (3 December 2007) List of codecs supported by Adobe Flash Player, Retrieved on 2009-08-10 Flash Player version Released File format Video compression formats Audio compression formats 6 2002 SWF Sorenson Spark, Screen video MP3, ADPCM, Nellymoser 7 2003 SWF, FLV Sorenson Spark, Screen video MP3, ADPCM, Nellymoser 8 2005 SWF, FLV On2 VP6, Sorenson Spark, Screen video, Screen video 2 MP3, ADPCM, Nellymoser 9 2007 SWF, FLV On2 VP6, Sorenson Spark, Screen video, Screen video 2, H.264 MP3, ADPCM, Nellymoser, AAC SWF, F4V, ISO base media file format H.264 AAC, MP3 10 2008 SWF, FLV On2 VP6, Sorenson Spark, Screen video, Screen video 2, H.264 MP3, ADPCM, Nellymoser, Speex, AAC SWF, F4V, ISO base media file format H.264 AAC, MP3

Use of the H.264 compression format in the FLV file format has some limitations so authors of Flash Player strongly encourage use of the new standard F4V file format.

Encoding Commonly, Flash Video FLV files contain video bit streams which are a proprietary variant of the H.263 video standard, under the name of Sorenson Spark (FourCC FLV1). Sorenson Spark is an older codec for FLV files but it is also a widely available and compatible one, because it was the first video codec supported in Flash Player.Sorenson Media Difference Between Flash 6 and Flash 8 video , Retrieved on 2009-08-09 It is the required video compression format for Flash Player 6 and 7.Adobe LiveDocs (2005) Flash 8 Documentation – About the On2 VP6 and Sorenson Spark video codecs , Retrieved on 2009-08-09 Flash Player 8 and newer revisions also support the playback of On2 TrueMotion VP6 video bit streams (FourCC VP6F or FLV4). On2 VP6 is the preferred video compression format for use with Flash Player 8 and higher.Adobe Flash CS4 Professional Documentation – Digital video and Flash, Retrieved on 2009-08-09 On2 VP6 can provide a higher visual quality than Sorenson Spark, especially when using lower bit rates. On the other hand, it is computationally more complex and therefore will not run as well on certain older system configurations.Adobe LiveDocs (2005) Flash 8 Documentation – Comparing the On2 VP6 and Sorenson Spark video codecs , Retrieved on 2009-08-09

The Flash Video FLV file format supports two versions of a so-called 'screenshare' (Screen video) codec which is an encoding format designed for screencasts. Both these formats are bitmap tile based, can be lossy by reducing color depths and are compressed using zlib. The second version is only playable in Flash Player 8 and newer. Audio in Flash Video files is usually encoded as MP3. However, audio in Flash Video FLV files recorded from the user's microphone use the proprietary Nellymoser Asao Codec.MultimediaWiki Nelly Moser, Retrieved on 2009-08-11 (Flash Player 10 released in 2008 also supports the open source Speex codec.AskMeFlash.com (10 May 2009) Speex vs Nellymoser , Retrieved on 2009-08-12) FLV files also support uncompressed audio or ADPCM format audio. Recent versions of Flash Player 9 support AAC (HE-AAC/AAC SBR, AAC Main Profile, and AAC-LC). Support for encoding Flash Video files is provided by an encoding tool included with Adobe's Flash Professional and Creative Suite products, On2's Flix encoding tools, Sorenson Squeeze, FFmpeg and other third-party tools.

Media type support Supported media types in both the Flash Video and ISO base media file formats:

Video H.264 (added to MP4 and FLV) unofficial Google GPL FLV implementations for Android MPEG-4 ASP (native to MP4) ITU H.263 (native to 3GPP MP4) Audio MPEG layer 3 (native to Flash Video) MPEG AAC (added to Flash Video)

Supported media types in just the Flash Video file format:

General video RGB (supported by same type code SWF uses) run-length (supported by same type code SWF uses) Sorenson's H.263 (native to Flash Video) On2 TrueMotion VP6 with and without alpha channel (added to Flash Video) Animated video are the zlib based Screen 1 and 2 (native to SWF). General audio are PCM and ADPCM (native to SWF). Vocal audio Nellymoser's Asao @ 16 or 8 or 5 kHz (native to SWF) a-law and μ-law (native to SWF) Speex (added to FLV) Timed text requires ActionScript specific commands for loading captioning, which is only supported by external text files in either JSON or W3C XML formats.

Supported media types in just the ISO base media file format:

Animated video are QuickTime types for GIF, PNG and JPEG, which replace the Screen 1 and 2 encodings. Timed text requires ActionScript specific commands for loading captions embedded as either EIA-608 or QuickTime mac based styled text with the 3GPP derived version that supports Unicode.

FLV converters

An FLV converter is a type of video conversion software that is used for turning videos from different formats into FLV. Below is a list of popular free video converters which support conversion to FLV.

SUPER (freeware) Free Studio (freeware) Freemake Video Converter (freeware) Format Factory (freeware) HandBrake Video Converter (GPL-licensed free software) VLC Video Player (GPL-licensed free software) Any Video Converter (freeware and commercial) FFmpeg (GPL-licensed free software) Easy 7-Zip (7z)-Via Extraction of Audios (MP3) and Videos (no audio)

These programs run under Microsoft Windows. HandBrake, FFmpeg and VLC also run under Mac OS X and Linux.

Extensions As FLV is widely used for online streaming through Real-Time Messaging Protocol, non-Adobe parties have added newer, modern audio and video codecs to FLV by extending the file format. See .

Flash Video Structure

Header

FLV files start with a standard header which is shown below:Open Source Flash (2011) Flash Video (FLV) [online] Available from (link already dead): http://osflash.org/flv#flv_format

Field Data Type Default Details Signature byte "FLV" Always "FLV" Version uint8 1 Only 0x01 is valid Flags uint8 bitmask 0x05 Bitmask: 0x04 is audio, 0x01 is video (so 0x05 is audio+video) Header Size uint32_be 9 Used to skip a newer expanded header

Packets

After the header, the file is split into packets called "FLV tags", which have 15-byte packet headers. The first four bytes denote the size of the previous packet/tag (including the header without the first field), and aid in seeking backward.

Field Data Type Default Details Size of previous packet uint32_be 0 For first packet set to NULL Packet Type uint8 18 For first packet set to AMF Metadata Payload Size uint24_be varies Size of packet data only Timestamp Lower uint24_be 0 For first packet set to NULL Timestamp Upper uint8 0 Extension to create a uint32_be value Stream ID uint24_be 0 For first stream of same type set to NULL Payload Data freeform varies Data as defined by packet type

The Packet Type byte of a packet/tag header is based on the RTMP message ID byte with the AMF metadata value of 18 (0x12), video payload value of 9 (0x09) and audio payload value of 8 (0x08) being the only valid types used. The third bit indicates the payload is encrypted using the same mechanism as RTMP uses, however this is rarely used due to encrypted transports such as RTMP being used instead. The FLV packet encryption is generally inherited from a MP4 file that is stored on an Adobe Flash Media Server.

Packet types enumerated as 1 is a RTMP set packet size. Packet types enumerated from 3 are RTMP bytes read report, RTMP ping, RTMP server bandwidth, RTMP client bandwidth. Packet types enumerated from 8 are Audio payload, Video payload. Packet types enumerated from 15 are RTMP flex stream send, RTMP flex shared object, RTMP flex message, AMF metadata, shared object, RTMP invoke. Packet type enumerated as 24 is an encapsulated flash video.