Highlighted

MP4 Faststart (moov atom placement)

New Here ,
Jan 20, 2019

Copy link to clipboard

Copied

The new Interactive Advertising Bureau ready-to-serve delivery spec (& YouTube) require "faststart" historically referred to as "web optimised" or "streaming enabled" or similar. This includes placing the moov atom at the start of the file instead of the end so the file will start playing straight away instead of waiting until it's fully downloaded / buffered - which can be a big advantage for viewers if it's a longer or larger file or if they have low bandwidth. They can watch the video while it's buffering.

Adobe Media Encoder (and most other modern software, certainly on OSX) no longer let the user control this option. QT7 Pro & Compressor were the last major apps I know of that let you select this, however they are very old now.

In everything I've read people suggest AME places the MOOV atom at the end of the file by default. However when viewing the metadata of H264 MP4s encoded with AME, the MOOV atom appears immediately under the Atom ftyp line in the hierarchy tree i.e. is at the start of the file not the end. I know there are command line apps to edit the MOOV atom position, but that's not very convenient & may be unnecessary.

My suspicion is AME is actually placing the MOOV atom at the end of the file for QT .mov files (ideal for desktop playback), but assumes H264 MP4s are for online use & is placing the MOOV atom at the beginning by default already.

Can anyone confirm this or explain in the example below you you can tell tell the moov atom isn't at the start?

ps. If you don't know the answer, please don't reply with a non sequitur about why I should take a good hard look at myself for using a Mac instead of a PC or why faststart doesn't matter anymore because of fast internet speeds etc etc. I'm talking about an industry wide delivery requirement that I have no authority to change & it's commercial something I need to solve.

EXAMPLE METADATA OF H264 MP4 ENCODED WITH AME...

_________________________________________________________________________

Atom ftyp @ 0 of size: 24, ends @ 24

Atom moov @ 24 of size: 13297, ends @ 13321

     Atom mvhd @ 32 of size: 108, ends @ 140

     Atom trak @ 140 of size: 8789, ends @ 8929

         Atom tkhd @ 148 of size: 92, ends @ 240

         Atom edts @ 240 of size: 36, ends @ 276

             Atom elst @ 248 of size: 28, ends @ 276

         Atom mdia @ 276 of size: 8653, ends @ 8929

             Atom mdhd @ 284 of size: 32, ends @ 316

             Atom hdlr @ 316 of size: 64, ends @ 380

             Atom minf @ 380 of size: 8549, ends @ 8929

                 Atom vmhd @ 388 of size: 20, ends @ 408

                 Atom hdlr @ 408 of size: 51, ends @ 459

                 Atom dinf @ 459 of size: 36, ends @ 495

                     Atom dref @ 467 of size: 28, ends @ 495

                         Atom url  @ 483 of size: 12, ends @ 495

                 Atom stbl @ 495 of size: 8434, ends @ 8929

                     Atom stsd @ 503 of size: 156, ends @ 659

                         Atom avc1 @ 519 of size: 140, ends @ 659

                             Atom avcC @ 605 of size: 54, ends @ 659

                     Atom stts @ 659 of size: 24, ends @ 683

                     Atom stss @ 683 of size: 88, ends @ 771

                     Atom sdtp @ 771 of size: 762, ends @ 1533

                     Atom stsc @ 1533 of size: 28, ends @ 1561

                     Atom stsz @ 1561 of size: 3020, ends @ 4581

                     Atom stco @ 4581 of size: 316, ends @ 4897

                     Atom ctts @ 4897 of size: 4032, ends @ 8929

     Atom trak @ 8929 of size: 4334, ends @ 13263

         Atom tkhd @ 8937 of size: 92, ends @ 9029

         Atom edts @ 9029 of size: 36, ends @ 9065

             Atom elst @ 9037 of size: 28, ends @ 9065

         Atom mdia @ 9065 of size: 4198, ends @ 13263

             Atom mdhd @ 9073 of size: 32, ends @ 9105

             Atom hdlr @ 9105 of size: 68, ends @ 9173

             Atom minf @ 9173 of size: 4090, ends @ 13263

                 Atom smhd @ 9181 of size: 16, ends @ 9197

                 Atom hdlr @ 9197 of size: 51, ends @ 9248

                 Atom dinf @ 9248 of size: 36, ends @ 9284

                     Atom dref @ 9256 of size: 28, ends @ 9284

                         Atom url  @ 9272 of size: 12, ends @ 9284

                 Atom stbl @ 9284 of size: 3979, ends @ 13263

                     Atom stsd @ 9292 of size: 91, ends @ 9383

                         Atom mp4a @ 9308 of size: 75, ends @ 9383

                             Atom esds @ 9344 of size: 39, ends @ 9383

                     Atom stts @ 9383 of size: 24, ends @ 9407

                     Atom stsc @ 9407 of size: 700, ends @ 10107

                     Atom stsz @ 10107 of size: 2840, ends @ 12947

                     Atom stco @ 12947 of size: 316, ends @ 13263

     Atom udta @ 13263 of size: 58, ends @ 13321

         Atom ©TIM @ 13271 of size: 23, ends @ 13294 ~

         Atom ©TSC @ 13294 of size: 14, ends @ 13308 ~

         Atom ©TSZ @ 13308 of size: 13, ends @ 13321 ~

Atom uuid=be7acfcb-97a9-42e8-9c71-999491e3afac @ 13321 of size: 19263, ends @ 32584

Atom free @ 32584 of size: 28896, ends @ 61480

Atom mdat @ 61480 of size: 9923720 (^), ends @ 9985200

  (^)denotes a 64-bit atom length

~ denotes an unknown atom

------------------------------------------------------

Total size: 9985200 bytes; 54 atoms total.

Media data: 9923720 bytes; 61480 bytes all other atoms (0.616% atom overhead).

Total free atom space: 28896 bytes; 0.289% waste. Padding available: 28896 bytes

Thanks for the clarification. Yes I can confirm that we always place MOOV atom at the beginning of the file (right after FTYP atom) when exporting to H.264 in MP4.

Additional tech info; we allocate a free atom at the beginning when we begin encoding and so we can go back and write MOOV atom after the file is fully encoded. So this way MOOV can always be at the start of the file.

Hope this helps!

Views

3.4K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

MP4 Faststart (moov atom placement)

New Here ,
Jan 20, 2019

Copy link to clipboard

Copied

The new Interactive Advertising Bureau ready-to-serve delivery spec (& YouTube) require "faststart" historically referred to as "web optimised" or "streaming enabled" or similar. This includes placing the moov atom at the start of the file instead of the end so the file will start playing straight away instead of waiting until it's fully downloaded / buffered - which can be a big advantage for viewers if it's a longer or larger file or if they have low bandwidth. They can watch the video while it's buffering.

Adobe Media Encoder (and most other modern software, certainly on OSX) no longer let the user control this option. QT7 Pro & Compressor were the last major apps I know of that let you select this, however they are very old now.

In everything I've read people suggest AME places the MOOV atom at the end of the file by default. However when viewing the metadata of H264 MP4s encoded with AME, the MOOV atom appears immediately under the Atom ftyp line in the hierarchy tree i.e. is at the start of the file not the end. I know there are command line apps to edit the MOOV atom position, but that's not very convenient & may be unnecessary.

My suspicion is AME is actually placing the MOOV atom at the end of the file for QT .mov files (ideal for desktop playback), but assumes H264 MP4s are for online use & is placing the MOOV atom at the beginning by default already.

Can anyone confirm this or explain in the example below you you can tell tell the moov atom isn't at the start?

ps. If you don't know the answer, please don't reply with a non sequitur about why I should take a good hard look at myself for using a Mac instead of a PC or why faststart doesn't matter anymore because of fast internet speeds etc etc. I'm talking about an industry wide delivery requirement that I have no authority to change & it's commercial something I need to solve.

EXAMPLE METADATA OF H264 MP4 ENCODED WITH AME...

_________________________________________________________________________

Atom ftyp @ 0 of size: 24, ends @ 24

Atom moov @ 24 of size: 13297, ends @ 13321

     Atom mvhd @ 32 of size: 108, ends @ 140

     Atom trak @ 140 of size: 8789, ends @ 8929

         Atom tkhd @ 148 of size: 92, ends @ 240

         Atom edts @ 240 of size: 36, ends @ 276

             Atom elst @ 248 of size: 28, ends @ 276

         Atom mdia @ 276 of size: 8653, ends @ 8929

             Atom mdhd @ 284 of size: 32, ends @ 316

             Atom hdlr @ 316 of size: 64, ends @ 380

             Atom minf @ 380 of size: 8549, ends @ 8929

                 Atom vmhd @ 388 of size: 20, ends @ 408

                 Atom hdlr @ 408 of size: 51, ends @ 459

                 Atom dinf @ 459 of size: 36, ends @ 495

                     Atom dref @ 467 of size: 28, ends @ 495

                         Atom url  @ 483 of size: 12, ends @ 495

                 Atom stbl @ 495 of size: 8434, ends @ 8929

                     Atom stsd @ 503 of size: 156, ends @ 659

                         Atom avc1 @ 519 of size: 140, ends @ 659

                             Atom avcC @ 605 of size: 54, ends @ 659

                     Atom stts @ 659 of size: 24, ends @ 683

                     Atom stss @ 683 of size: 88, ends @ 771

                     Atom sdtp @ 771 of size: 762, ends @ 1533

                     Atom stsc @ 1533 of size: 28, ends @ 1561

                     Atom stsz @ 1561 of size: 3020, ends @ 4581

                     Atom stco @ 4581 of size: 316, ends @ 4897

                     Atom ctts @ 4897 of size: 4032, ends @ 8929

     Atom trak @ 8929 of size: 4334, ends @ 13263

         Atom tkhd @ 8937 of size: 92, ends @ 9029

         Atom edts @ 9029 of size: 36, ends @ 9065

             Atom elst @ 9037 of size: 28, ends @ 9065

         Atom mdia @ 9065 of size: 4198, ends @ 13263

             Atom mdhd @ 9073 of size: 32, ends @ 9105

             Atom hdlr @ 9105 of size: 68, ends @ 9173

             Atom minf @ 9173 of size: 4090, ends @ 13263

                 Atom smhd @ 9181 of size: 16, ends @ 9197

                 Atom hdlr @ 9197 of size: 51, ends @ 9248

                 Atom dinf @ 9248 of size: 36, ends @ 9284

                     Atom dref @ 9256 of size: 28, ends @ 9284

                         Atom url  @ 9272 of size: 12, ends @ 9284

                 Atom stbl @ 9284 of size: 3979, ends @ 13263

                     Atom stsd @ 9292 of size: 91, ends @ 9383

                         Atom mp4a @ 9308 of size: 75, ends @ 9383

                             Atom esds @ 9344 of size: 39, ends @ 9383

                     Atom stts @ 9383 of size: 24, ends @ 9407

                     Atom stsc @ 9407 of size: 700, ends @ 10107

                     Atom stsz @ 10107 of size: 2840, ends @ 12947

                     Atom stco @ 12947 of size: 316, ends @ 13263

     Atom udta @ 13263 of size: 58, ends @ 13321

         Atom ©TIM @ 13271 of size: 23, ends @ 13294 ~

         Atom ©TSC @ 13294 of size: 14, ends @ 13308 ~

         Atom ©TSZ @ 13308 of size: 13, ends @ 13321 ~

Atom uuid=be7acfcb-97a9-42e8-9c71-999491e3afac @ 13321 of size: 19263, ends @ 32584

Atom free @ 32584 of size: 28896, ends @ 61480

Atom mdat @ 61480 of size: 9923720 (^), ends @ 9985200

  (^)denotes a 64-bit atom length

~ denotes an unknown atom

------------------------------------------------------

Total size: 9985200 bytes; 54 atoms total.

Media data: 9923720 bytes; 61480 bytes all other atoms (0.616% atom overhead).

Total free atom space: 28896 bytes; 0.289% waste. Padding available: 28896 bytes

Thanks for the clarification. Yes I can confirm that we always place MOOV atom at the beginning of the file (right after FTYP atom) when exporting to H.264 in MP4.

Additional tech info; we allocate a free atom at the beginning when we begin encoding and so we can go back and write MOOV atom after the file is fully encoded. So this way MOOV can always be at the start of the file.

Hope this helps!

Views

3.4K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Jan 20, 2019 0
Adobe Employee ,
Jan 22, 2019

Copy link to clipboard

Copied

Hi Heath George,

Which version of Adobe application are you using?

Shivangi

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 22, 2019 0
New Here ,
Jan 22, 2019

Copy link to clipboard

Copied

Adobe Media Encode versions: 13.0.2 (Build 39) & 12.0.1 (Build 64).

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 22, 2019 0
Adobe Employee ,
Jan 25, 2019

Copy link to clipboard

Copied

Hi Heath,

Looking for a clarification on your question. As you say here, MOOV atom is placed at the beginning of the file for H.264/mp4 file produced in Premiere Pro and AME. Is that not what you want?

Encoding to H.264 in QuickTime format is not supported anymore in our apps but we instead recommend using H.264 format which then creates a mp4 file. This format has a lot more settings as compared with old H.264 in QuickTime. Is there anything missing in that support?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 25, 2019 0
New Here ,
Jan 28, 2019

Copy link to clipboard

Copied

Hi,

When encoding videos. Older encoding software used to allow the user to set the moov atom position manually with options like "web optimized" or "optimized for streaming" etc which shifted the moov atom from the end of the file (default) to the beginning. Adobe Media Encoder does not currently offer a user setting for faststart / manual moov atom placement. So it must be placing the moov atom according to an assumption made by the development team automatically on encode.

I have not been able to confirm anywhere online or in Adobe documentation where Adobe Media Encoder places the MOOV atom when encoding H264 MP4s. In an Adobe article by Maxim Levkov he wrote "Unless specified otherwise, the moov atom is normally stored at the end of the file..." this is the only information I've been able to find about moov atoms from Adobe. I need to ensure I'm delivering MP4 files to clients with the moov atom at the start for faststart ready-to-serve compliance. Currently I'm using terminal apps to change the moov atom position, although suspect that my be unnecessary. Which is what I'm trying to confirm.

My question: where does Adobe Media Encoder place the moov atom when encoding H264 MP4 files? Is it at the beginning by default or the end?

My guess is it's being placed at the start for MP4s & at the end for other desktop formats. But can you confirm this please?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 0
Adobe Employee ,
Jan 28, 2019

Copy link to clipboard

Copied

Thanks for the clarification. Yes I can confirm that we always place MOOV atom at the beginning of the file (right after FTYP atom) when exporting to H.264 in MP4.

Additional tech info; we allocate a free atom at the beginning when we begin encoding and so we can go back and write MOOV atom after the file is fully encoded. So this way MOOV can always be at the start of the file.

Hope this helps!

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 2
New Here ,
Jan 28, 2019

Copy link to clipboard

Copied

That does help. It's what I suspected from the metadata, but I wasn't confident I was reading it correctly. Thank you for confirming. The additional note about the free atom is also really helpful, as it means I don't need to worry about CBR vs VBR effecting the moov atom placement (noting some applications require VBR in order to place the moov atom after encoding). Thanks again,

Cheers, Heath

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 0