Copy link to clipboard
Copied
Is there a file format specification document available for the 4F4 file format? The HTTP Dynamic Streaming product page has a link titled "Learn about the F4F file format specification" but the link leads to the FLV/F4V file format specification document.
Copy link to clipboard
Copied
I guess that it refers to f4m: http://opensource.adobe.com/wiki/display/osmf/Flash+Media+Manifest+File+Format+Specification
Copy link to clipboard
Copied
It looks like F4M is a XML-based metadata protocol for video. I'm looking for F4F, which is a encapsulating protocol to divide FLV/F4V containers into fragments and segments.
Check out this packet dump from Limelight's demo site. This is a response with content type video/f4f, which seems to wrap a f4v file (moof/mfhd/traf keywords are visible, are these related to moov/mvhd/trak?).
0000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP/1.1 200 OK.
0010 0a 44 61 74 65 3a 20 54 68 75 2c 20 32 32 20 4a .Date: Thu, 22 J
0020 75 6c 20 32 30 31 30 20 31 32 3a 34 39 3a 30 37 ul 2010 12:49:07
0030 20 47 4d 54 0d 0a 53 65 72 76 65 72 3a 20 41 70 GMT..Server: Ap
0040 61 63 68 65 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 ache..Content-Le
0050 6e 67 74 68 3a 20 36 33 34 34 35 38 0d 0a 4c 61 ngth: 634458..La
0060 73 74 2d 4d 6f 64 69 66 69 65 64 3a 20 54 68 75 st-Modified: Thu
0070 2c 20 32 39 20 41 70 72 20 32 30 31 30 20 31 39 , 29 Apr 2010 19
0080 3a 34 38 3a 30 38 20 47 4d 54 0d 0a 43 6f 6e 74 :48:08 GMT..Cont
0090 65 6e 74 2d 54 79 70 65 3a 20 76 69 64 65 6f 2f ent-Type: video/
00a0 66 34 66 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a f4f..Connection:
00b0 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 0d 0a 00 keep-alive.....
00c0 00 00 45 61 66 72 61 00 00 00 00 c0 00 00 03 e8 ..Eafra.........
00d0 00 00 00 03 00 00 00 00 00 00 be 4b 00 00 00 00 ...........K....
00e0 00 00 3b 81 00 00 00 00 00 00 c3 ab 00 00 00 00 ..;.............
00f0 00 04 76 f5 00 00 00 00 00 00 c6 1d 00 00 00 00 ..v.............
0100 00 06 96 d9 00 00 00 fa 61 62 73 74 00 00 00 00 ........abst....
0110 00 00 00 0d 00 00 00 03 e8 00 00 00 00 00 00 cb ................
0120 53 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 S...............
0130 00 00 19 61 73 72 74 00 00 00 00 00 00 00 00 01 ...asrt.........
0140 00 00 00 01 00 00 00 0d 01 00 00 00 b5 61 66 72 .............afr
0150 74 00 00 00 00 00 00 03 e8 00 00 00 00 0a 00 00 t...............
0160 00 01 00 00 00 00 00 00 00 00 00 00 10 04 00 00 ................
0170 00 05 00 00 00 00 00 00 40 84 00 00 10 68 00 00 ........@....h..
0180 00 06 00 00 00 00 00 00 50 cf 00 00 0f a0 00 00 ........P.......
0190 00 07 00 00 00 00 00 00 60 73 00 00 10 04 00 00 ........`s......
01a0 00 08 00 00 00 00 00 00 70 6a 00 00 0e 10 00 00 ........pj......
01b0 00 09 00 00 00 00 00 00 7e 97 00 00 12 5c 00 00 ........~....\..
01c0 00 0a 00 00 00 00 00 00 90 d6 00 00 0e d8 00 00 ................
01d0 00 0b 00 00 00 00 00 00 9f aa 00 00 10 68 00 00 .............h..
01e0 00 0c 00 00 00 00 00 00 af f4 00 00 0e 74 00 00 .............t..
01f0 00 0d 00 00 00 00 00 00 be 4b 00 00 0c e4 00 00 .........K......
0200 3a 1c 6d 6f 6f 66 00 00 00 10 6d 66 68 64 00 00 :.moof....mfhd..
0210 00 00 00 00 00 0d 00 00 0b 64 74 72 61 66 00 00 .........dtraf..
0220 00 1c 74 66 68 64 00 00 00 03 00 00 00 01 00 00 ..tfhd..........
0230 00 00 00 7e dd 8d 00 00 00 01 00 00 00 24 74 72 ...~.........$tr
0240 75 6e 00 00 0f 01 00 00 00 01 00 00 00 6b 00 00 un...........k..
0250 0e c4 00 00 a6 6f 02 00 00 00 00 00 00 00 00 00 .....o..........
0260 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 00 .$trun..........
0270 aa 13 00 00 0e 6a 00 00 3a e0 01 01 00 00 00 00 .....j..:.......
0280 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
0290 00 01 00 00 e7 f5 00 00 0e c4 00 00 0b 43 01 01 .............C..
02a0 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
02b0 0f 01 00 00 00 01 00 00 f6 31 00 00 0e c4 00 00 .........1......
02c0 0a 88 01 01 00 00 00 00 00 00 00 00 00 24 74 72 .............$tr
02d0 75 6e 00 00 0f 01 00 00 00 01 00 01 03 88 00 00 un..............
02e0 0e 6a 00 00 3c 00 01 01 00 00 00 00 00 00 00 00 .j..<...........
02f0 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 01 .$trun..........
0300 40 fe 00 00 0e c4 00 00 09 8e 01 01 00 00 00 00 @...............
0310 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
0320 00 01 00 01 4d 8a 00 00 0e c4 00 00 0b 06 01 01 ....M...........
0330 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
0340 0f 01 00 00 00 01 00 01 5b 84 00 00 0e 6a 00 00 ........[....j..
0350 3a a2 01 01 00 00 00 00 00 00 00 00 00 24 74 72 :............$tr
0360 75 6e 00 00 0f 01 00 00 00 01 00 01 99 0d 00 00 un..............
0370 0e c4 00 00 08 f3 01 01 00 00 00 00 00 00 00 00 ................
0380 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 01 .$trun..........
0390 a4 f4 00 00 0e c4 00 00 0c 1b 01 01 00 00 00 00 ................
03a0 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
03b0 00 01 00 01 b2 af 00 00 0e c4 00 00 3b 78 01 01 ............;x..
03c0 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
03d0 0f 01 00 00 00 01 00 01 f1 76 00 00 0e 6a 00 00 .........v...j..
03e0 09 de 01 01 00 00 00 00 00 00 00 00 00 24 74 72 .............$tr
03f0 75 6e 00 00 0f 01 00 00 00 01 00 01 fe 6c 00 00 un...........l..
0400 0e c4 00 00 09 08 01 01 00 00 00 00 00 00 00 00 ................
0410 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 02 .$trun..........
0420 0a 6c 00 00 0e c4 00 00 3c 52 01 01 00 00 00 00 .l......<R......
0430 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
0440 00 01 00 02 49 c7 00 00 0e 6a 00 00 09 bb 01 01 ....I....j......
0450 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
0460 0f 01 00 00 00 01 00 02 55 18 00 00 0e c4 00 00 ........U.......
0470 08 3e 01 01 00 00 00 00 00 00 00 00 00 24 74 72 .>...........$tr
0480 75 6e 00 00 0f 01 00 00 00 01 00 02 60 60 00 00 un..........``..
0490 0e c4 00 00 3e 23 01 01 00 00 00 00 00 00 00 00 ....>#..........
04a0 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 02 .$trun..........
04b0 a1 9c 00 00 0e c4 00 00 07 d0 01 01 00 00 00 00 ................
04c0 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
04d0 00 01 00 02 ac 91 00 00 0e 6a 00 00 08 77 01 01 .........j...w..
04e0 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
04f0 0f 01 00 00 00 01 00 02 b8 12 00 00 0e c4 00 00 ................
0500 3b 51 01 01 00 00 00 00 00 00 00 00 00 24 74 72 ;Q...........$tr
0510 75 6e 00 00 0f 01 00 00 00 01 00 02 f5 4d 00 00 un...........M..
0520 0e c4 00 00 06 ce 01 01 00 00 00 00 00 00 00 00 ................
0530 00 24 74 72 75 6e 00 00 0f 01 00 00 00 01 00 02 .$trun..........
0540 ff 48 00 00 0e 6a 00 00 08 8b 01 01 00 00 00 00 .H...j..........
0550 00 00 00 00 00 24 74 72 75 6e 00 00 0f 01 00 00 .....$trun......
0560 00 01 00 03 0a c4 00 00 0e c4 00 00 3b 1f 01 01 ............;...
0570 00 00 00 00 00 00 00 00 00 24 74 72 75 6e 00 00 .........$trun..
0580 0f 01 00 00 00 01 00 03 48 e8 00 00 0e c4 00 00 ........H.......
0590 07 4e 01 01 00 00 00 00 00 00 00 00 00 24 74 72 .N...........$tr
05a0 75 6e 00 00 0f 01 00 00 un......
Copy link to clipboard
Copied
The file format spec provided in one of the replies is the manifest file format specification - F4M.
The actual f4f file format specification is only available under NDA. We have a white paper that we are working on @ Adobe, and once that is out, I can update you. Stay tuned.
Thank you !
Copy link to clipboard
Copied
The F4F format has to be parsed into an FLV before it can be played in flash. You can see how the OSMF is parsing it here.
http://opensource.adobe.com/svn/opensource/osmf/trunk/framework/OSMF/org/osmf/net/httpstreaming/f4f/
It may help you figure out how to turn an FLV into an F4F
Copy link to clipboard
Copied
Of course it can be reverse engineered, but it shouldn't be this hard to put a format specification online which
is hopefully a finished document already. Why should we disassemble a volkswagen first to know how to
assemble a porsche. Just supply a spec.
Copy link to clipboard
Copied
Just curious if Adobe's white paper on f4f spec is available yet?
Copy link to clipboard
Copied
It is..
http://www.adobe.com/devnet/f4v.html
-nate
Copy link to clipboard
Copied
looks like that link points to f4V specifications, not f4F.
I've found this
http://www.adobe.com/products/httpdynamicstreaming/pdfs/httpdynamicstreaming_wp_ue.pdf
whitepaper that briefly talks about f4f spec, but I'd like to see Adobe's official white paper on f4f.
Copy link to clipboard
Copied
Hi !
Any news about a public version of f4f and f4x specifications ?
Are the f4f/f4v files used to provide services from live streams ?
Copy link to clipboard
Copied
f4f and f4x specs are includded in the document mentioned above : http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf
f4f is another name for f4v. This doc has all the specs, box order, fields, offsets, etc.
Copy link to clipboard
Copied
I can't see the specs for *F4X* there - the index file?
Perhaps it's named something non-obvious ...
I'm currently looking at which implementation of HTTP Streaming to employ for our project - Apple's HLS or Adobe's HDS.
And I must admit, I feel some Anger with Adobe's implementation.
It is overly-complex, uses unreadable data formats, has reinvented the wheel in many areas, has the bare minimum of open-source components
(e.g. neither the segmenter nor the now-required-thanks-to-convoluted-architecture Apache module have source available),
and generally has been much more of a *Pain In The Ass* to get to grips with than Apple's HLS.
Why do index files and boxes even exist, enclosing fragments in sements? (nice hijacking of existing terminology there btw - that's not going to confuse anybody).
This architecture increases complexity in all areas - in media Creation, Management, and Delivery.
Most stupidly it means the content delivery server must do nontrivial work when serving content, rather than "just serve files" (as happens with HLS).
With HLS I can use whatever stupidly simple and fast web server I want (and granted if I want more functionality - which I don't - extend it my damn self).
With Adobe I have to either buy FMS (we're not going to force you to, just make if f'ing uncomfortable to do anything BUT), use the binary-only Apache module, or get my own custom module done.
How well is that going to SCALE, where on each fragment request, the delivery server must parse the index, transform the request to byte offsets in the f4v files, then chop these bytes from the f4v files, before finally sending them to the client? Rather than HLS where all it has to do, is do it's usual thing - "just serve a file".
I suspect it will scale terribly. Perhaps at the most-optimistic - "much less well".
And the f4m and f4x file formats - for things which are basically indexes and metadata, they've invented their own new formats - why is one a binary format, while the other's useful data is base64-encoded-AMF .... (yeah, AMF, also cool, let's reinvent our own messaging format ...) ... let me just open that up in my text editor and debug my problem there ...
I'm sorry but none of this seems like a simple, elegant, open and well-architected solution.
Actually it seems more like a piece of crap.
In the interests of open-mindedness I'm still going to persevere with HDS today, but so far it looks more headaches than it's worth. I'm kind of looking forward to deleting all evidence of it from my systems.
Nick