Flash Video
This article needs additional citations for verification. (August 2011) |
FLV file Icon from Adobe Systems | |
Filename extension |
.flv, .f4v, .f4p, .f4a, .f4b |
---|---|
Internet media type |
video/x-flv, video/mp4, video/x-m4v, audio/mp4a-latm, video/3gpp, video/quicktime, audio/mp4 |
Developed by | Adobe Systems (originally developed by Macromedia) |
Type of format | Media container |
Container for | Audio, video, text, data |
Extended from | FLV: SWF F4V: MPEG-4 Part 12 |
Flash Video is a container file format used to deliver video over the Internet using Adobe Flash Player versions 6–11. Flash Video content may also be embedded within SWF files. There are two different video file formats known as Flash Video: FLV and F4V. The audio and video data within FLV files are encoded in the same manner as they are within SWF files. The latter F4V file format is based on the ISO base media file format and is starting with Flash Player 9 update 3.[1][2] Both formats are supported in Adobe Flash Player and currently developed by Adobe Systems. FLV was originally developed by Macromedia.
Flash Video has been accepted as the default online video format by many sites. Notable users of it include YouTube, Hulu, VEVO, Yahoo! Video, metacafe, Reuters.com, and many other news providers.
The standards documentation for BBC Online states that the BBC now preferentially accepts Flash videos for submission, to the disadvantage of other formats previously in use on its sites[3] such as RealVideo or WMV.
Flash Video FLV files usually contain material encoded with codecs following the Sorenson Spark or VP6 video compression formats. The most recent public releases of Flash Player (collaboration between Adobe Systems and MainConcept) also support H.264 video and HE-AAC audio.[4] All of these compression formats are currently 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 do not support the Flash Player plugin and so require other delivery methods such as provided by the Adobe Flash Media Server.[5]
History
Support for video in SWF file format was added in Flash Player 6, released in 2002. In 2003, Flash Player 7 added direct support for FLV file format. Because of restrictions in the FLV file format, Adobe Systems has created in 2007 new file formats listed below, based on the ISO base media file format (MPEG-4 Part 12). Flash Player does not check the extension of the file, but rather looks inside the file to detect which format it is.[6][7] The new file formats are completely different from the older FLV file format. For example, F4V does not support Screen video, Sorenson Spark, VP6 video compression formats and ADPCM, Nellymoser audio compression formats.[1][7] Authors of Flash Player strongly encourage everyone to embrace the new standard file format F4V (ISO base media file format). There are functional limits with the FLV structure when streaming H.264 or AAC which could not be overcome without a redesign of the file format. This is one reason why Adobe Systems is moving away from the traditional FLV file structure.[7]
File Extension | Mime Type | Description |
---|---|---|
.flv | video/x-flv |
File Extension | Mime Type | Description |
---|---|---|
.f4v | video/mp4 | Video for Adobe Flash Player |
.f4p | video/mp4 | Protected Video for Adobe Flash Player |
.f4a | audio/mp4 | Audio for Adobe Flash Player |
.f4b | audio/mp4 | Audio Book for Adobe Flash Player |
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. Starting with SWF files created for Flash Player 7, Flash Player can play FLV file format directly (MIME type video/x-flv). Starting with SWF files created for Flash Player 9 Update 3, Flash Player can also play the new F4V file format.[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 and AAC compression formats in the FLV file format has some limitations and authors of Flash Player strongly encourage everyone to embrace the new standard F4V file format.[7]
Encoding
Commonly, Flash Video FLV files contain video bit streams which are a proprietary variant of the H.263 video standard,[12] under the name of Sorenson Spark (FourCC FLV1).[13][14] 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.[15] It is the required video compression format for Flash Player 6 and 7.[16][17] 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.[8][13] 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.[16][18]
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.[9] (Flash Player 10 released in 2008 also supports the open source Speex codec.[19]) 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).[10]
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 FLV file format:[1]
- Video: On2 VP6, Sorenson Spark (Sorenson H.263), Screen video, H.264
- Audio: MP3, ADPCM, Linear PCM, Nellymoser, Speex, AAC, G.711 (reserved for internal use)
Supported media types in F4V file format:[1]
- Video: H.264
- Images (still frame of video data): GIF, PNG, JPEG
- Audio: AAC, HE-AAC, MP3
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 supports conversion to FLV.
- SUPER (freeware)
- Free Studio (freeware)
- Freemake Video Converter (freeware)
- Format Factory (freeware)
- HandBrake Video Converter (GPL-licensed free software)
These programs run under Windows7/Vista/XP. HandBrake also under Mac OS X and Linux.
FLV File Structure
Header
FLV files start with a standard header which is shown below:[20]
Field | Data Type | Example | Description |
---|---|---|---|
Signature | byte[3] | “FLV” | Always “FLV” |
Version | uint8 | 0 × 01 | Currently 1 for known FLV files |
Flags | uint8 bitmask | 0 × 05 | Bitmask: 5 is audio+video |
Header Size | uint32_be | 0 × 00 0x00 0 × 00 0x09 | Always 9 for known FLV files |
Tags
Followed the header, the file is split into packets called FLV tags which are delineated by 11-byte headers and 4-byte footers. The first byte of the tag denotes the packet type as follows:
- 0 × 12 – Metadata packet
- 0 × 08 – Audio packet
- 0 × 09 – Video packet
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/FLVPacket.png/365px-FLVPacket.png)
Following that, we find 3 bytes denoting length, 3 denoting the timestamp and 4 denoting the stream id. 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. 0 × 08 for audio and 0 × 09 for video). FLV tags are thus converted into RTMP packets when the file is streamed through a Flash Media Server or equivalent RTMP Server. Each tag ends with 4 bytes denoting the total length of the packet which is the length found in the header plus 11 bytes for the header. Between the tag header and footer is found the compressed media data that will eventually be passed to the codec.
The first packet encountered is usually a metadata packet which contains information such as
- width/height – as an integer
- duration
- framerate
- keyframes – an array with the positions of p-frames, needed when random access is sought.
When streamed using an Actionscript built player, the metadata values above are passed as arguments on the onMetaData callback function.
FLV players
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.
Flash Player
The 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 the Adobe Flash authoring tool, Adobe 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 9 Update 3, released on 3 December 2007,[21] 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.[22] 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.[6] 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 $5million (£3.5million) per year.[23]
Web-based
Flowplayer is an Open Source video player for websites.
Desktop-based
Microsoft Windows, Mac OS X, Unix-based
- Adobe Media Player (freeware) (no longer published or supported by Adobe)
- Media Player Classic (free software)
- MPlayer (free software)
- RealPlayer (freeware)
- VLC media player (free software)
- Winamp (freeware)
Mac OS devices can play flash videos in QuickTime with the help of additional software (such as the open source Perian component.)
IrfanView (freeware)'s plugins package supports FLV if the IE version of Flash Player is installed; and, unlike some of the above listed players, it is small and has neither advertisements, nor registration (for home use), nor license-legalese.
PDA-based and smartphone-based
Windows Mobile, PalmOS-based
- The Core Pocket Media Player (open source software)
The iPhone and Android devices can play flash videos with the help of additional software (such as the Skyfire web browser application.) Versions of Android above 2.1 support flash unlike Apple's iOS.
Delivery options
Flash Video files can be delivered in several different ways:
- As a standalone .FLV file. Although Flash Video files are normally delivered using a Flash player for control, the .FLV file itself is only playable with an FLV player. There are several third party players available.
- Embedded in an SWF file using the Flash authoring tool (supported in Flash Player 6 and later). The entire file must be transferred before playback can begin. Changing the video requires rebuilding the SWF file.
- Progressive download via HTTP (supported in Flash Player 7 and later). This method uses ActionScript to include an externally hosted Flash Video file client-side for playback. Progressive download has several advantages, including buffering, use of generic HTTP servers, and the ability to reuse a single SWF player for multiple Flash Video sources. Flash Player 8 includes support for random access within video files using the partial download functionality of HTTP, sometimes this is referred to as streaming. However, unlike streaming using RTMP, HTTP "streaming" does not support real-time broadcasting. Streaming via HTTP requires a custom player and the injection of specific Flash Video metadata containing the exact starting position in bytes and timecode of each keyframe. Using this specific information, a custom Flash Video player can request any part of the Flash Video file starting at a specified keyframe. For example, Google Video, Youtube, and Bitgravity support progressive downloading and can seek to any part of the video before buffering is complete. The server-side part of this "HTTP pseudo-streaming" method is fairly simple to implement, for example in PHP, as an Apache module, or using lighttpd.
- Streamed via RTMP to the Flash Player using the Flash Media Server (formerly called Flash Communication Server), VCS, ElectroServer, Helix Universal Server, Wowza Media Server, WebORB for .NET, WebORB for Java, erlyvideo (in erlang), or the open source Red5 server. As of April 2008, there are stream recorders available for this protocol, re-encoding screencast software excluded.
- Flash Media Server 4.5 allows Flash video streaming to iPhones and iPads. It achieves this by delivering the content in an MPEG-2 stream using the HTTP Live Streaming format.[24]
Flash video recording
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.[citation needed]
See also
References
- ^ a b c d e f Adobe Systems Incorporated (November 2008). "Video File Format Specification, Version 10" (PDF). Adobe Systems Incorporated. Retrieved 3 August 2009.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ "What is the difference between Flash Video (FLV), F4V and H.264". Google Knol. 7 December 2008. Retrieved 3 August 2009.
- ^ Future Media Standards & Guidelines – AV Addendum v1.5 BBC
- ^ "Flash H.264". MainConcept. Retrieved 24 September 2010.
- ^ Adobe Flash Media Server
- ^ a b Kaourantin.net (20 August 2007). "What just happened to video on the web". Retrieved 12 August 2009.
- ^ a b c d Kaourantin.net (31 October 2007) Tinic Uro New File Extensions and MIME Types, Retrieved on 2009-08-03
- ^ a b Adobe Flash CS4 Professional Documentation – Digital video and Flash, Retrieved on 2009-08-09
- ^ a b MultimediaWiki Nelly Moser, Retrieved on 2009-08-11
- ^ a b OSFlash (7 October 2008). "Flash Video (FLV) Open Source Flash". Retrieved 12 August 2009.
- ^ Adobe (3 December 2007) List of codecs supported by Adobe Flash Player, Retrieved on 2009-08-10
- ^ Benjamin Larsson (17 March 2009). "h263-svq3 optimizations". FFmpeg-devel (Mailing list). Retrieved 9 August 2009.
{{cite mailing list}}
: Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ a b "The quest for a new video codec in Flash 8". Kaourantin.net. 13 August 2005. Retrieved 10 August 2009.
- ^ "Sorenson Spark". MultimediaWiki. Retrieved 3 November 2009.
- ^ Sorenson Media Difference Between Flash 6 and Flash 8 video, Retrieved on 2009-08-09
- ^ a b Adobe LiveDocs (2005) Flash 8 Documentation – About the On2 VP6 and Sorenson Spark video codecs, Retrieved on 2009-08-09
- ^ "Flash CS3 – Comparing the On2 VP6 and Sorenson Spark video codecs". Retrieved 4 February 2011.
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.
- ^ Adobe LiveDocs (2005) Flash 8 Documentation – Comparing the On2 VP6 and Sorenson Spark video codecs, Retrieved on 2009-08-09
- ^ AskMeFlash.com (10 May 2009) Speex vs Nellymoser, Retrieved on 2009-08-12
- ^ Open Source Flash (2011) Flash Video (FLV) [online] Available from: http://osflash.org/flv#flv_format
- ^ "Adobe Flash Player 9 Downloads". Adobe. 3 December 2007. Retrieved 31 January 2008.
- ^ [1][dead link]
- ^ Frewin, Jonathan (18 May 2010). "Flash creator wades into Apple debate". BBC News. Retrieved 1 June 2010.
- ^ Apple iPads and iPhones finally get Flash video 9 September 2011. Retrieved 10 September 2011.
External links
- Flash Developer Center – Flash Video Articles
- Flash Video (FLV) File Format Specification (adobe.com)
- List of codecs supported by Adobe Flash Player versions from 6 to 9 (adobe.com)
- Macromedia Flash FLV Video File Format (Library of Congress)