This article needs additional citations for verification .(August 2011) |
Filename extension | .flv, .fla, .f4v, .f4a, .f4b, .f4p |
---|---|
Internet media type | video/x-flv, video/mp4, audio/mp4 |
Developed by | Adobe Systems (originally developed by Macromedia) |
Initial release | FLV: 10 September 2003 F4V: 3 December 2007 |
Latest release | 10.1.2.01 August 2010 |
Type of format | Container format |
Container for | Audio, video, text, data |
Extended from | FLV: SWF F4V: MPEG-4 Part 12 |
Open format? | Yes |
Free format? | No |
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. [1] [2] 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. As of 2010 [update] public releases of Flash Player (collaboration between Adobe Systems and MainConcept) also support H.264 video and HE-AAC audio. [3] 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. [4]
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. [5] [6]
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. [1] [6] 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. [6] 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. [1]
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. [6]
Commonly, Flash Video FLV files contain video bit streams which are a proprietary variant of the H.263 video standard, [10] under the name of Sorenson Spark (FourCC FLV1). [11] [12] 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. [13] It is the required video compression format for Flash Player 6 and 7. [14] [15] 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. [7] [11] 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. [14] [16]
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. [8] (Flash Player 10 released in 2008 also supports the open source Speex codec. [17] ) 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.
Supported media types in both the Flash Video and ISO base media file formats: [1]
Supported media types in just the Flash Video file format: [1]
Supported media types in just the ISO base media file format: [1]
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.
These programs run under Microsoft Windows. HandBrake, FFmpeg and VLC also run under Mac OS X and Linux.
FLV files start with a standard header which is shown below: [19]
Field | Data Type | Default | Details |
---|---|---|---|
Signature | byte[3] | "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 |
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.
Following that, there are three bytes for the Payload Size denoting length of the Payload Data, then four bytes for the Timestamp in milliseconds (with the last byte used to extend the first three bytes), the next 3 bytes for the Stream ID (incremented for multiple streams of the same type), and finally followed by the actual payload data. There is a direct relation between the fields encountered in an FLV Tag and those found in a RTMP packet, as for example the FLV Packet Type field uses the same numeric values as the RTMP Chunk Type field (ex. 0x08 for audio and 0x09 for video). FLV tags are thus converted into RTMP packets when the file is streamed through a Flash Media Server or equivalent RTMP Server.
The first packet encountered is usually a metadata packet which contains information such as:
When streamed using an Actionscript built player, the metadata values above are passed as arguments on the onMetaData callback function. Audio packets have the first byte of the payload defining the decoding details with the first four bits for the encoding used and the last four bits for the parameters required to process the encoding. Video packets have this order reversed.
Video encodings enumerated from 0 are:
Id | Video encoding |
---|---|
0 | RGB |
1 | run-length |
2 | Sorenson's H.263 |
3 | Screen 1 |
4 | On2 TrueMotion VP6 |
5 | VP6 with alpha |
6 | Screen 2 |
7 | MP4 H.264 |
8 | ITU H.263 |
9 | MPEG-4 ASP. |
Video processing parameters enumerated from 1 are:
Id | Video processing parameters |
---|---|
1 | key frame |
2 | non-key frame |
3 | H.263 disposable frame |
4 | generated key frame |
5 | one byte frame seeking instruction |
MPEG-4 encodings such as H.264, MPEG-4 ASP and AAC add a one byte value with a NULL value indicating that the payload contains MPEG-4 configuration details. MPEG-4 video encodings also add three bytes for composition timestamp offset which is required for encodings that use B-frames.
Audio encodings enumerated from 0 are:
Id | Audio encoding |
---|---|
0 | native PCM |
1 | ADPCM |
2 | MPEG layer 3 |
3 | PCM - little endian |
4 | Asao 16 kHz |
5 | Asao 8 kHz |
6 | Asao parameter rate |
7 | a-law |
8 | μ-law |
Audio encodings enumerated from 10 are:
Id | Audio encoding |
---|---|
10 | MP4 AAC |
11 | Speex |
Audio encodings enumerated from 14 are MPEG layer 3 8 kHz, Device specific such as MIDI.
Audio processing parameters with the first two bits for the sampling rate, next bit flags 16-bit sample size on with off indicating 8-bit sample size, and the final bit flags stereophonic channels on with off indicating monaural only. Sampling rates enumerated from 0 are 5.5 kHz, 11.025 kHz quarter, 22.05 kHz half, 44.1 kHz full.
Encrypted packets have an additional 31 or 24 byte header before the AES-CBC encrypted payload as follows:
Field | Data Type | Default | Details |
---|---|---|---|
NumFilters | uint8 | 1 | always only 1 |
FilterName | C string | "Encryption" | if only selected payloads are encrypted then is "SE" |
Length | uint24_be | 16 or 17 | initialization vector length |
EncryptedAU | uint8 bitmask | 0x80 or 0x00 | only if FilterName is "SE", then 0x80 mean encrypted payload |
IV | uint128 | varies | initialization vector for AES decryption |
Content | freeform | varies | encrypted payload |
Padding | freeform | 0x10 | encryption padding |
An FLV player is a type of media player that is used for playing Flash video from PC as well as from Internet websites. An FLV player can be used standalone, without the need of the Adobe Flash authoring or developmental tools. It can also be embedded in the website using Flash component or embeddable version of FLV player.
Adobe Flash Player is a multimedia and application player originally developed by Macromedia and acquired by Adobe Systems. It plays SWF files, which can be created by Adobe Flash Professional, Apache Flex, or a number of other Adobe Systems and 3rd party tools. It has support for a scripting language called ActionScript, which can be used to display Flash Video from an SWF file. Because the Flash Player runs as a browser plug-in, it is possible to embed Flash Video in web pages and view the video within a web browser. Flash Player supported display of Flash Video files since version 6, with the Sorenson Spark and On VP6 video codecs. Support was recently added for H.264 video content as well.
Flash Player 9 Update 3, released on 3 December 2007, [20] also includes support for the new Flash Video file format F4V and H.264 video standard (also known as MPEG-4 part 10, or AVC) which is even more computationally demanding, but offers significantly better quality/bitrate ratio. [1] Specifically, Flash Player now supports video compressed in H.264 (MPEG-4 Part 10), audio compressed using AAC (MPEG-4 Part 3), the F4V, MP4 (MPEG-4 Part 14), M4V, M4A, 3GP and MOV multimedia container formats, 3GPP Timed Text specification (MPEG-4 Part 17) which is a standardized subtitle format and partial parsing support for the 'ilst' atom which is the ID3 equivalent iTunes uses to store metadata. MPEG-4 Part 2 video (e.g. created with DivX or Xvid) is not supported. [5] In an interview with BBC News, the main programmer of Flash Jonathan Gay said that the company had wanted to use H.264 when video support was originally added to Flash, but had been deterred by the patent licensing fees of around $5 million (£3.5 million) per year. [21]
Flash Player supports two distinct modes of video playback:
Microsoft Windows, Mac OS X, Unix-based
Mac OS devices can play flash videos in QuickTime with the help of additional software (such as the open source Perian component.)
Windows Mobile, Palm OS–based
The iPhone and Android devices can play flash videos with the help of additional software (such as the Skyfire web browser application.) Apple iOS has never supported Flash. Android versions above 2.1 through 4.0 supported Flash; Adobe has discontinued Flash Player for Android. [23] On 29 June 2012, Adobe announced that, as they were discontinuing development of the mobile version of Flash, they would prevent the Flash player from installing from the Google Play Store on any Android devices that do not already have the Flash player installed, and that they would not be releasing a version of Flash certified for use with Android version 4.1, codenamed Jelly Bean. [24]
Flash Video files can be delivered in several different ways:
It is possible to record online flash videos using stream recorders and screen video capture software. The former gives lossless results, while the latter allows recording any video even when anti-leeching measures are used.
Adobe Flash is a multimedia software platform used for production of animations, rich internet applications, desktop applications, mobile apps, mobile games, and embedded web browser video players.
QuickTime is a discontinued extensible multimedia architecture created by Apple, which supports playing, streaming, encoding, and transcoding a variety of digital media formats. The term QuickTime also refers to the QuickTime Player front-end media player application, which is built-into macOS, and was formerly available for Windows.
SWF is a defunct Adobe Flash file format that was used for multimedia, vector graphics and ActionScript.
3GP is a multimedia container format defined by the Third Generation Partnership Project (3GPP) for 3G UMTS multimedia services. It is used on 3G mobile phones but can also be played on some 2G and 4G phones.
A container format or metafile is a file format that allows multiple data streams to be embedded into a single file, usually along with metadata for identifying and further detailing those streams. Notable examples of container formats include archive files and formats used for multimedia playback. Among the earliest cross-platform container formats were Distinguished Encoding Rules and the 1985 Interchange File Format.
These tables compare features of multimedia container formats, most often used for storing or streaming digital video or digital audio content. To see which multimedia players support which container format, look at comparison of media players.
Gnash is a media player for playing SWF files. Gnash is available both as a standalone player for desktop computers and embedded devices, as well as a plugin for the browsers still supporting NPAPI. It is part of the GNU Project and is a free and open-source alternative to Adobe Flash Player. It was developed from the gameswf project.
Real-Time Messaging Protocol (RTMP) is a communication protocol for streaming audio, video, and data over the Internet. Originally developed as a proprietary protocol by Macromedia for streaming between Flash Player and the Flash Communication Server, Adobe has released an incomplete version of the specification of the protocol for public use.
Adobe Media Server (AMS) is a proprietary data and media server from Adobe Systems. This server works with the Flash Player and HTML5 runtime to create media driven, multiuser RIAs. The server uses ActionScript 1, an ECMAScript based scripting language, for server-side logic. Prior to version 2, it was known as Flash Communication Server. Prior to version 5, it was known as Flash Media Server. In February 2019, Adobe Systems Incorporated granted Veriskope Inc rights to further develop, resell, and extend distribution of the software product.
K-Multimedia Player is an Adware-supported media player for Windows and iOS that can play most current audio and video formats, including VCD, HDML, DVD, AVI, MKV, Ogg, OGM, 3GP, MPEG-1/2/4, AAC, WMA 7, 8, WMV, RealMedia, FLV and QuickTime. KMPlayer shows many advertisements, including in the homepage, side panels, options panel, and as pop-up ads.
Asao is a proprietary single-channel (mono) codec and compression format optimized for low-bitrate transmission of audio, developed by Nellymoser Inc.
Protected Streaming is a DRM technology by Adobe. The aim of the technology is to protect digital content from unauthorized use.
The ISO base media file format (ISOBMFF) is a container file format that defines a general structure for files that contain time-based multimedia data such as video and audio. It is standardized in ISO/IEC 14496-12, a.k.a. MPEG-4 Part 12, and was formerly also published as ISO/IEC 15444-12, a.k.a. JPEG 2000 Part 12.
Flash Media Live Encoder (FMLE) was a free live encoding software product from Adobe Systems. It was available for Microsoft Windows and Mac OS.
The HTML5 specification introduced the video element for the purpose of playing videos, partially replacing the object element. HTML5 video is intended by its creators to become the new standard way to show video on the web, instead of the previous de facto standard of using the proprietary Adobe Flash plugin, though early adoption was hampered by lack of agreement as to which video coding formats and audio coding formats should be supported in web browsers. As of 2020, HTML5 video is the only widely supported video playback technology in modern browsers, with the Flash plugin being phased out.
RTMPDump is a free software project dedicated to develop a toolkit for RTMP streams. The package includes three programs, rtmpdump
, rtmpsrv
and rtmpsuck
.
The Helix Universal Media Server was a product developed by RealNetworks and originates from the first streaming media server originally developed by Progressive Networks in 1994. It supported a variety of streaming media delivery transports including MPEG-DASH RTMP (flash), RTSP (standard), HTTP Live Streaming (HLS), Microsoft Silverlight and HTTP Progressive Download enabling mobile phone OS and PC OS media client delivery.
Wowza Streaming Engine is a unified streaming media server software developed by Wowza. The server is used for streaming of live and on-demand video, audio, and rich Internet applications over IP networks to desktop, laptop, and tablet computers, mobile devices, IPTV set-top boxes, internet-connected TV sets, game consoles, and other network-connected devices. The server is a Java application deployable on most operating systems.
Sorenson Media was an American software company specializing in video encoding technology. Established in December 1995 as Sorenson Vision, the company developed technology which was licensed and ultimately acquired from Utah State University. The company first announced its codec at a developer’s preview at MacWorld Expo in January 1997.
Unreal Media Server is a streaming server software created by Unreal Streaming Technologies.
{{cite journal}}
: Cite journal requires |journal=
(help)To support better quality video at the same data rate, the On2 VP6 codec is noticeably slower to encode and requires more processor power on the client computer to decode and play back. For this reason, carefully consider the lowest common denominator of computer you intend your viewing audience to use when accessing your Flash Video content. If you anticipate a large user base that uses older computers, consider encoding your FLV files using the Sorenson Spark codec.