chevron_rightAd Tags
chevron_rightHTML5 Ads
chevron_rightVAST Tags
chevron_rightVideo Ads
Ad Load Size Detector
Initial Load Detector
Host-initiated Subload Detector
Network Requests Detector
CPU Usage Tester
DOMContentLoaded Detector
Ad Size Validator
Has Video Detector
Memory Usage Detector
SSL-Compatibility Detector
Iframe Count Detector
Cookies Dropped Detector
Chrome Heavy Ad Intervention Detector
JavaScript Error Detector
Console Warning Detector
Mobile Friendly Tester
Creative Rendered Detector
Blocked by AdBlock Detector
Document.write() Detector
Creative Border Detector
Ad Server Vendor Detector
Missing Asset Detector
Dialog and Modal Detector
Measurement Pixels Detector
Local Storage Detector
HTML Syntax Error Detector
Ad Tag Landing Page Checker
Meta ad.size Detector
Click Tag Detector
CSS/JS Minified Detector
Image Optimization Detector
External Asset Detector
Uses jQuery Detector
HTML5 Library Detector
Hosted File Size Detector
HTML5 Allowed File Type Detector
Ad Load Size Detector
Initial Load Detector
Host-initiated Subload Detector
Network Requests Detector
CPU Usage Tester
DOMContentLoaded Detector
Ad Size Validator
Has Video Detector
Memory Usage Detector
SSL-Compatibility Detector
Iframe Count Detector
Cookies Dropped Detector
Chrome Heavy Ad Intervention Detector
JavaScript Error Detector
Console Warning Detector
Creative Rendered Detector
Blocked by AdBlock Detector
Document.write() Detector
Creative Border Detector
Missing Asset Detector
Dialog and Modal Detector
Measurement Pixels Detector
Local Storage Detector
HTML Syntax Error Detector
VAST Ad System Detector
VAST CORS Header Detector
VAST Creative Count Detector
VAST SSL-Compatibility Tester
VAST Version Detector
VAST Wrapper Redirect Detector
VAST XML Content-Type Detector
VAST XML Load Time Detector
VAST HTTP Code Detector
VAST XML File Size Detector
VAST Impression Logging Detector
VAST Audio Channels Detector
VAST Audio Compression Detector
VAST Audio Sample Rate Detector
VAST Audio Codec Detector
VAST Audio Loudness Detector
VAST True Peak Detector
VAST Audio Bit Rate Detector
VAST Video Aspect Ratio Detector
VAST Video Dimensions Detector
VAST Video Duration Detector
VAST Video Bit Rate Detector
VAST Video Bit Rate Mode Detector
VAST Video Chroma Subsampling Detector
VAST Video Color Space Detector
VAST Video Frame Rate Detector
VAST Video File Size Detector
VAST Video Container Detector
VAST Video File Extension Detector
VAST Video Codec Detector
VAST MOOV Atom Location Detector
VAST Delivery Type Detector
VAST Skip Offset Detector
VAST Video Mime-Type Detector
Video Codec Detector
Aspect Ratio Detector
Video Dimension Detector
Video Frame Rate Detector
MOOV Atom Position Detector
Video Color Space Detector
Video Chroma Subsampling Detector
Audio Codec Detector
Audio Loudness Detector (LUFS)
Audio True Peak Detector
Audio Sample Rate Detector
Audio Channel Detector
Audio Compression Detector
Audio Bit Rate Detector
Video Container Format Detector
Video Bit Rate Detector
Bit Rate Mode Detector
File Size Detector
File Extension Detector
Video Duration Detector
Video Mime Type Detector
document_scanner
Ad Tag Tester
CPU/RAM usage, Dimensions, SSL...
document_scanner
HTML5 Ad Validator
Initial Load, Click Tags, Meta ad.size...
document_scanner
VAST Validator
Audio Loudness, Video Codecs, Dimensions...
document_scanner
Video Validator
MOOV Atoms, Audio Loudness, Bit Rates...
headset
Live Chat Online
Get instant answers to your questions
email
Contact Support
Reach out to see how AdValify can help
cloud
Network Status
See live network status updates
emoji_events
Customer Testimonials
Read what others have to say about AdValify
auto_stories
User Guide
Get started with AdValify in seconds
document_scanner
Creative QA Tests
CPU/RAM usage, Initial Load, SSL, etc.
emoji_events
Customer Testimonials
Read what others have to say about AdValify
api
API: Ad Tag Tester
API docs to validate ad tags
api
API: HTML5 Ad Validator
API docs to validate HTML5 ads
api
API: VAST Validator
API docs to validate VAST ads
open_in_new
GitHub PHP Class
PHP Ad Validator Class
public
Network Status
Live infrastructure status
AdValify.io Logo
AdValify
Automated Ad Validation
 
Share with
your colleagues!

VAST and the super important MP4 MOOV atom

Written by Roy
Apr 5, 2022 • 3 min read

The position of the MOOV atom in an MP4 file is important when it comes to VAST video ads. This is especially true for video ads with progressive delivery, since the MOOV atom has to be received in order for playback to begin.

Are you a publisher serving pre-roll video ads from your advertisers? Read on to learn why a QA check on VAST tags is indispensable to improve the user experience (and to increase your revenue).

What is the MOOV atom's function?

The MP4 container contains many data structures, each with their own function. Important ones are ftype, mdat and moov which I'll briefly discuss here.

  • ftype: a data structure containing information about the file type
  • mdat: container containing the compressed MP4 video/audio binary data
  • moov: section with movie information containing references to mdat atoms
The MOOV atom acts like a table of contents. It contains information where the exact video data can be located in the file.

Why should it be at the beginning of the file?

It would be impossible for the video to start playing without reading the MOOV atom first. Since it acts as a table of contents, the video player has to know where the first seconds of the video are located in the file. Videos that are encoded with the MOOV atom at the beginning of the file are able to start playing immediately, since the table of contents is available right after downloading the first few KBs.

How can I check the location of the MOOV atom?

Let me discuss a few solutions here below:

  • Use Chrome. Open your VAST tag and copy the MP4 URL location. Open Chrome Dev Tools (CTRL + SHIFT + J) and disable the cache. Set the Network Throttling to Slow 3G. Then, paste the MP4 URL location in the tab and click the play button in the video player. You will see a progress bar indicating the download of the video.

    When does the video actually starts playing? If it starts before the progress bar finished, then the MOOV atom is likely in the beginning of the file. If you have to wait until the whole video is cached, then the MOOV atom is at the end of the file.

    vast_moov_chrome.png

  • Use CreativeQA.io. Go to creativeqa.io/vast-tag-tester and enter your VAST URL in the box. Launch the scan and you'll get a quality assurance report that mentions the position of the MOOV atom. If the test fails when the MOOV atom is at the end of the file, you may want to contact your advertiser or ad server vendor to have the issue fixed.
    vast_moov_creativeqa.png
    The VAST inspector has 34 free Quality Assurance tests that let you pre-validate video ads before they go live. Think about the video codec, a skip option, HD/FHD requirements, mime-types, download speed and many more.

What if the MOOV atom is found at the end of the file?

In that case, the whole MP4 file has to be downloaded before playback can begin. Video ads are generally a couple of MBs in file size, which takes time to download by the user's browser. Most VAST players have a threshold when the ad should begin playing. If it doesn't start playing within a certain number of seconds, it will skip the ad automatically and play the main video content. This is a devastating scenario for both the publisher as the advertiser.

Automated QA scanners are valuable tools for Ad Ops and publishers to maintain the quality of video ads, both pre-flight as well as in-flight.

External Resources

More from AdValify.io