Flash Video (FLV), F4V and H.264

What is the FLV file format?

Starting with SWF files published for Flash Player 6, Flash Player can exchange audio, video, and data over RTMP connections with the Adobe Flash Media Server... One way to feed data to Flash Media Server (and thus on to Flash Player clients) is from files in the FLV file format.

Starting with SWF files published for Flash Player 7, Flash Player can also play FLV files directly with MIME type video/x-flv.

An FLV file encodes synchronized audio and video streams. The audio and video data within FLV files are encoded in the same way as audio and video within SWF files.


What is the F4V file format?

Starting with SWF files published for Flash Player 9 Update 3 (9,0,115,0), Flash Player can play F4V files. The F4V format is based on the format specified by ISO/IEC 14496-12: ISO base media file format. A large part of the F4V format involves metadata. When Flash Player loads an F4V file, various stream properties are made available to a running ActionScript program via the NetStream.onMetaData property. The available properties differ depending on the software used. The F4V file format supports an assortment of optional tag boxes that can occur within a moov box.

For more information please check here:

http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v9.pdf


What is H.264?

H.264 is the next-generation video compression technology in the MPEG-4 standard, also known as MPEG-4 Part 10. H.264 can match the best possible MPEG-2 quality at up to half the data rate. H.264 also delivers excellent video quality across the entire bandwidth spectrum — from 3G to HD and everything in between (from 40 Kbps to upwards of 10 Mbps).

More relevant instruction for FLV, f4v and H.264:

Flash Video is the name of a file format used to deliver video over the Internet using Adobe Flash Player version 6 or newer. Flash Video content may also be embedded within SWF files. Until version 9 update 3 of the Flash Player, Flash Video referred to a proprietary file format, having the extension .FLV, but Adobe introduced new file extensions and MIME types and suggests using those instead of the old FLV:

File Extension

FTYP

MIME Type

Description

.f4v

‘F4V ’

video/mp4

Video for Adobe Flash Player

.f4p

‘F4P ’

video/mp4

Protected Media for Adobe Flash Player

.f4a

‘F4A ’

video/mp4

Audio for Adobe Flash Player

.f4b

‘F4B ’

video/mp4

Audio Book for Adobe Flash Player

.flv


video/x-flv

Flash Video

It is possible to place H.264 and AAC streams into the traditional FLV file, but Adobe strongly encourages everyone to embrace the new standard file format. There are functional limits with the FLV structure when streaming H.264 which couldn’t be overcome without a redesign of the file format. This is one of the reasons Adobe is moving away from the traditional FLV file structure. Specifically dealing with sequence headers and enders is tricky with FLV streams. Adobe is still working out if it’s possible to place On2 VP6 streams into the new file format.

Tips:

F4v files are MPEG4 containers with h.264 video and MP3 audio. JW player doesn't have the f4v file type defined properly, but if you are streaming from FMS3, you can easily edit RTMPModel. as so that it recognizes f4v files as MP4.

For example, modify the section that deals with the RTMP url to something like this:

private function getID(url:String):String {
if(url.substr(-4) == '.mp3') {
url = 'mp3:'+url.substr(0,url.length-4);
} else if(url.substr(-4) == '.mp4' || url.substr(-4) == '.mov' ||
url.substr(-4) == '.aac' || url.substr(-4) == '.m4a' || url.substr(-4) == '.f4v') {
url = 'mp4:'+url.substr(0,url.length-4);
} else if (url.substr(-4) == '.flv'){
url = url.substr(0,url.length-4);
}
return url;
};


What’s new in Video File Format 10?

The following features are new in the Flash video file format specifications (both FLV and F4V) corresponding to Flash Player 10.

(1) Speex

Flash Player 10 supports the open source Speex audio codec. Speex data can serve as the audio stream in an FLV file.

(2) XMP Metadata

The F4V file format supports a box type called 'uuid' which can store data formatted in Adobe’s Extensible Metadata Platform (XMP.) and present it to a SWF file via ActionScript…

For more detailed information, please check here:

http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v9.pdf