VMAPの概要
VMAPとはIABが定義した仕様で、『動画本編のどの位置に広告を差し込むのか、またその広告はどこから取得してくるのか』を定義するための仕様です。
例えば、尺が30分間のバラエティー番組があったとして、番組の始まる前(pre-roll)と14分20秒地点(mid-roll)と一番最後(post-roll)に広告の挿入箇所(AdBreakと呼びます)を設ける、といったことを定義するのに使います。
VMAPを使うメリット
動画プレイヤーがVMAPに対応していると、本編がどのプレイヤー環境で再生されたとしても同じ位置にAdBreakを置くことが出来ます。
つまり、PC上のFlash Playerで本編を再生している場合でも、スマホのアプリ上で再生している場合でも、あるいはコンテンツのシンジケーション先の他社製プレイヤーで再生されている場合でも、同じ位置で広告が挿入されるようになります。
VMAPは主にプレミアムなコンテンツホルダーが利用することを想定しています。
例えば、ドラマやドキュメンタリーの場合、広告を挿入しても気にならない位置(場面が切り替わるところとか)があるかと思います。本編動画がどこで流れていようとも同じ位置で広告が挿入されることで、コンテンツホルダーはどの環境でも同じような本編の視聴体験をさせるようにコントールすることが出来ます。(サイトAではきちんとした場所で広告が挿入されるのに、サイトBは3分おきに広告が入るとかイヤですよね)
VMAPとVAST3のAd Podsとの違い
VMAPはVAST3で定義されたAd Podsとよくごっちゃにされますが、『Ad Podsは1回の広告レスポンス内で複数の広告を返すための仕様』です。
VMAPでAdBreakの位置を定義し、各AdBreak内で複数の広告を連続して流す場合にはAd Podsを使う、というような使い分けをします。
Ad Podsが出てくる前は、1回の広告リクエストで返すことの出来る広告は1つに限られていました。そのため、1つのAdBreak内で複数の広告を流したい場合、広告サーバーに複数回リクエストする必要がありました。
Ad Podsでは複数の広告をまとめて返すことができるため、広告サーバー側で『45秒に収まるように複数広告を返す(例えば、15秒広告が3つ、あるいは30秒と15秒の広告が1つずつ)』といったことが実装しやすくなります。
実際のVMAPの例
VMAPは次のような形式のXMLです。
<AdBreak>
で広告挿入箇所を定義し、その箇所に差し込む広告タグを<AdTagURI>
または<VASTAdData>
で記載します。
<vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0">
<vmap:AdBreak breakType="linear" breakId="mypre" timeOffset="start">
<!-- timeOffset="start"はpre-roll -->
<vmap:AdSource allowMultipleAds="true" followRedirects="true" id="1">
<!-- Adタグを書く場合はこのような形で -->
<vmap:AdTagURI templateType="vast3">
<![CDATA[http://adserver.example.com/get/preroll]]>
</vmap:AdTagURI>
</vmap:AdSource>
</vmap:AdBreak>
<vmap:AdBreak breakType="linear" breakId="mymid" timeOffset="00:14:20.000">
<!-- 14分20秒地点にmid-roll -->
<vmap:AdSource allowMultipleAds="true" followRedirects="true" id="2">
<vmap:AdTagURI templateType="vast3">
<![CDATA[http://adserver.example.com/get/midroll]]>
</vmap:AdTagURI>
</vmap:AdSource>
</vmap:AdBreak>
<vmap:AdBreak breakType="linear" breakId="myend" timeOffset="end">
<!-- post-roll -->
<vmap:AdSource allowMultipleAds="true" followRedirects="true" id="3">
<vmap:VASTAdData>
<VAST version="3.0" xsi:noNamespaceSchemaLocation="vast.xsd">
<!--VMAP内に直接VASTを埋め込むことも出来る-->
</VAST>
</vmap:VASTAdData>
</vmap:AdSource>
</vmap:AdBreak>
</vmap:VMAP>