11 Replies Latest reply: Nov 3, 2011 4:16 PM by nick.doyle RSS

    4F4 File Format Specification

    bradtgmurray1

      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.

        • 2. Re: 4F4 File Format Specification
          bradtgmurray1 Community Member

          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......

          • 3. Re: 4F4 File Format Specification
            Nikhil Pavan Kalyan Community Member

            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 !

            • 4. Re: 4F4 File Format Specification
              Nate Burr

              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/httpstre aming/f4f/

               

              It may help you figure out how to turn an FLV into an F4F

              • 5. Re: 4F4 File Format Specification
                maartenvanderhoef

                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.

                • 6. Re: 4F4 File Format Specification
                  Petro Gretchanei

                  Just curious if Adobe's white paper on f4f spec is available yet?

                  • 8. Re: 4F4 File Format Specification
                    Petro Gretchanei Community Member

                    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.

                    • 9. Re: 4F4 File Format Specification
                      jltresset

                      Hi !

                      Any news about a public version of f4f and f4x specifications ?

                      Are the f4f/f4v files used to provide services from live streams ?

                      • 10. Re: 4F4 File Format Specification
                        Petro Gretchanei Community Member

                        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.

                        • 11. Re: 4F4 File Format Specification
                          nick.doyle Community Member

                          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 **** 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