Inserimento di annunci sul lato clientInserting ads on the client side

Questo argomento contiene informazioni su come inserire diversi tipi di annunci sul lato client.This topic contains information on how to insert various types of ads on the client side.

Per informazioni sul supporto di sottotitoli codificati e annunci nei video in streaming live, vedere, Sottotitoli codificati supportati e standard per l'inserimento di annunci.For information about closed captioning and ad support in Live streaming videos, see Supported Closed Captioning and Ad Insertion Standards.

Nota

Azure Media Player attualmente non supporta gli annunci.Azure Media Player does not currently support Ads.

Inserimento di annunci nei file multimedialiInserting Ads into your Media

Servizi multimediali di Azure offre il supporto per l'inserimento di annunci tramite la piattaforma Windows Media Platform, ovvero i player framework.Azure Media Services provides support for ad insertion through the Windows Media Platform: Player Frameworks. Player Framework con supporto per gli annunci sono disponibili per i dispositivi Windows 8, Silverlight, Windows Phone 8 e iOS.Player frameworks with ad support are available for Windows 8, Silverlight, Windows Phone 8, and iOS devices. Ogni player framework contiene codice di esempio che illustra come implementare un'applicazione di tipo lettore. È possibile inserire tre tipi diversi di annunci nei file multimediali.Each player framework contains sample code that shows you how to implement a player application.There are three different kinds of ads you can insert into your media:list.

  • Lineari : annunci con frequenza massima che interrompono il video principale.Linear – full frame ads that pause the main video.
  • Non lineari : annunci sovrapposti visualizzati durante la riproduzione del video principale, in genere un logo o un'altra immagine statica all'interno del lettore.Nonlinear – overlay ads that are displayed as the main video is playing, usually a logo or other static image placed within the player.
  • Complementari : annunci visualizzati all'esterno del lettore.Companion – ads that are displayed outside of the player.

Gli annunci possono essere inseriti in qualsiasi punto della sequenza temporale del video principale.Ads can be placed at any point in the main video’s time line. È necessario indicare al lettore quando riprodurre l'annuncio e quali annunci riprodurre.You must tell the player when to play the ad and which ads to play. Questa operazione viene eseguita mediante una serie di file standard basati su XML: Video Ad Service Template (VAST), Digital Video Multiple Ad Playlist (VMAP), Media Abstract Sequencing Template (MAST) e Digital Video Player Ad Interface Definition (VPAID).This is done using a set of standard XML-based files: Video Ad Service Template (VAST), Digital Video Multiple Ad Playlist (VMAP), Media Abstract Sequencing Template (MAST), and Digital Video Player Ad Interface Definition (VPAID). I file VAST indicano quali annunci visualizzare,VAST files specify what ads to display. mentre i file VMAP specificano quando riprodurre i vari annunci e contengono XML VAST.VMAP files specify when to play various ads and contain VAST XML. I file MAST rappresentano invece un altro modo di riprodurre in sequenza annunci contenenti XML VAST.MAST files are another way to sequence ads which also can contain VAST XML. I file VPAID, infine, definiscono un'interfaccia tra il lettore video e l'annuncio o il server di annunci.VPAID files define an interface between the video player and the ad or ad server.

Ogni Player Framework ha un funzionamento diverso, che verrà illustrato in un argomento specifico.Each player framework works differently and each will be covered in its own topic. Questo argomento illustra i meccanismi di base usati per inserire gli annunci. Le applicazioni di tipo lettore video richiedono gli annunci da un server di annunci.This topic will describe the basic mechanisms used to insert ads.Video player applications request ads from an ad server. Il server di annunci può rispondere in diversi modi:The ad server can respond in a number of ways:

  • Restituzione di un file VASTReturn a VAST file
  • Restituzione di un file VMAP (con VAST incorporato)Return a VMAP file (with embedded VAST)
  • Restituzione di un file MAST (con VAST incorporato)Return a MAST file (with embedded VAST)
  • Restituzione di un file VAST con annunci VPAIDReturn a VAST file with VPAID ads

Uso di un file VAST (Video Ad Service Template)Using a Video Ad Service Template (VAST) File

Un file VAST specifica gli annunci da visualizzare.A VAST file specifies what ad or ads to display. Il codice XML seguente è un esempio di un file VAST per un annuncio lineare:The following XML is an example of a VAST file for a linear ad:

<VAST version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="oxml.xsd">
  <Ad id="115571748">
    <InLine>
      <AdSystem version="2.0 alpha">Atlas</AdSystem>
      <AdTitle>Unknown</AdTitle>
      <Description>Unknown</Description>
      <Survey></Survey>
      <Error></Error>
      <Impression id="Atlas"><![CDATA[http://www.myserver.com/tracking-resource]]></Impression>
      <Creatives>
        <Creative id="video" sequence="0" AdID="">
          <Linear>
            <Duration>00:00:32</Duration>
            <TrackingEvents>
              <Tracking event="start"><![CDATA[http://www.myserver.com/start-tracking-resource]]></Tracking>
              <Tracking event="midpoint"><![CDATA[http://www.myserver.com/midpoint-tracking-resource]]></Tracking>
              <Tracking event="complete"><![CDATA http://www.myserver.com/complete-tracking-resource]]></Tracking>
              <Tracking event="expand"><![CDATA[http://www.myserver.com/expand-tracking-resource]]></Tracking>
            </TrackingEvents>
            <VideoClicks>
              <ClickThrough id="Atlas Redirect"><![CDATA[http://www.myserver.com/click-resource]]></ClickThrough>
              <ClickTracking id="Spare"></ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile apiFramework="Windows Media" id="windows_progressive_200" maintainAspectRatio="true" scaleable="true"  delivery="progressive" bitrate="200" width="400" height="300" type="video/x-ms-wmv">
                <![CDATA[http://www.myserver.com/media/myad_200_4x3.wmv]]>
              </MediaFile>
              <MediaFile apiFramework="Windows Media" id="windows_progressive_300" maintainAspectRatio="true" scaleable="true"  delivery="progressive" bitrate="300" width="400" height="300" type="video/x-ms-wmv">
                <![CDATA[http://www.myserver.com/media/myad_300_4x3.wmv]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
      <Extensions>
        <Extension type="Atlas">
        </Extension>
      </Extensions>
    </InLine>
  </Ad>
</VAST>

L'annuncio lineare viene descritto dall'elemento <Linear>.The linear ad is described by the <Linear> element. Specifica la durata dell'annuncio, gli eventi di rilevamento, il clickthrough, il monitoraggio dei clic e alcuni elementi MediaFile.It specifies the duration of the ad, tracking events, click through, click tracking, and a number of MediaFile elements. Gli eventi di rilevamento vengono specificati entro l'elemento <TrackingEvents> e permette a un server di annunci di rilevare diversi elementi che si verificano durante la visualizzazione dell'annuncio.Tracking events are specified within the <TrackingEvents> element and allow an ad server to track various events that occur while viewing the ad. In questo caso vengono rilevati gli eventi iniziali, intermedi, di completamento e di espansione.In this case the start, midpoint, complete, and expand events are tracked. L'evento iniziale si verifica quando l'annuncio viene visualizzato.The start event occurs when the ad is displayed. L'evento intermedio si verifica quando è stato visualizzato almeno il 50% della sequenza temporale dell'annuncio.The midpoint event occurs when at least 50% of the ad’s timeline has been viewed. L'evento di completamento si verifica quando l'esecuzione dell'annuncio è stata completata.The complete event occurs when the ad has run to the end. L'evento di espansione di verifica quando l'utente espande il lettore video visualizzandolo a schermo intero.The Expand event occurs when the user expands the video player to full screen. I clickthrough vengono specificati con un elemento <ClickThrough> entro un elemento <VideoClicks> e specifica un URI per una risorsa da visualizzare quando l'utente fa clic sull'annuncio.Clickthroughs are specified with a <ClickThrough> element within a <VideoClicks> element and specifies a URI to a resource to display when the user clicks on the ad. Il monitoraggio dei clic viene specificato in un elemento <ClickTracking>, incluso in un elemento <VideoClicks> e specifica una risorsa di rilevamento che il lettore può richiedere quando l'utente fa clic sull'annuncio. Gli elementi <MediaFile> specificano informazioni su una codifica specifica di un annuncio.ClickTracking is specified in a <ClickTracking> element, also within the <VideoClicks> element and specifies a tracking resource for the player to request when the user clicks on the ad.The <MediaFile> elements specify information about a specific encoding of an ad. Quando sono presenti più elementi <MediaFile>, il lettore video può scegliere la codifica migliore per la piattaforma.When there is more than one <MediaFile> element, the video player can choose the best encoding for the platform.

Gli annunci lineari possono essere visualizzati in un ordine specifico.Linear ads can be displayed in a specified order. A tale scopo, aggiungere altri elementi al file VAST e specificare l'ordine usando l'attributo di sequenza.To do this, add additional elements to the VAST file and specify the order using the sequence attribute. L'esempio seguente illustra questi concetti.The following example illustrates this:

<VAST version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="oxml.xsd">
  <Ad id="1" sequence="0">
    <InLine>
      <AdSystem version="2.0 alpha">Atlas</AdSystem>
      <AdTitle>Unknown</AdTitle>
      <Description>Unknown</Description>
      <Survey></Survey>
      <Error></Error>
      <Impression id="Atlas"><![CDATA[http://myserver.com/Impression/Ad1trackingResouce]]></Impression>
      <Creatives>
        <Creative id="video" sequence="0" AdID="">
          <Linear>
            <Duration>00:00:32</Duration>
            <MediaFiles>
              <!-- ... -->
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
  <Ad id="2" sequence="1">
    <InLine>
      <AdSystem version="2.0 alpha">Atlas</AdSystem>
      <AdTitle>Unknown</AdTitle>
      <Description>Unknown</Description>
      <Survey></Survey>
      <Error></Error>
      <Impression id="Atlas"><![CDATA[http://myserver.com/Impression/Ad2trackingResouce]]></Impression>
      <Creatives>
        <Creative id="video" sequence="0" AdID="">
          <Linear>
            <Duration>00:00:30</Duration>
            <MediaFiles>
              <!-- ... -->
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

Anche gli annunci non lineari vengono specificati in un elemento .Nonlinear ads are specified in a element as well. L'esempio seguente illustra un elemento che descrive un annuncio non lineare.The following example shows a element that describes a nonlinear ad.

<Creative id="video" sequence="1" AdID="">
  <NonLinearAds>
    <NonLinear width="216" height="121" minSuggestedDuration="00:00:15">
      <StaticResource creativeType="image/png"><![CDATA[http://myserver/images/image.png]]></StaticResource>
      <StaticResource creativeType="image/jpg"><![CDATA[http://myserver/images/image.jpg]]></StaticResource>
    </NonLinear>
    <TrackingEvents>
         <Tracking event="acceptInvitation"><![CDATA[http://myserver/tracking/trackingID]></Tracking>
         <Tracking event="collapse"><![CDATA[http://myserver/tracking/trackingID2]]></Tracking>
     </TrackingEvents>
   </NonLinearAds>
</Creative>

L'elemento <NonLinearAds> può contenere uno o più elementi <NonLinear>, ognuno dei quali può descrivere un annuncio non lineare.The <NonLinearAds> element can contain one or more <NonLinear> elements, each of which can describe a nonlinear ad. L'elemento <NonLinear> specifica la risorsa per l'annuncio non lineare.The <NonLinear> element specifies the resource for the nonlinear ad. La risorsa può essere di tipo <StaticResouce>, <IFrameResource> o <HTMLResouce>.The resource can be a <StaticResouce>, an <IFrameResource>, or an <HTMLResouce>. <StaticResource> descrive una risorsa non HTML e definisce un attributo creativeType che specifica la modalità di visualizzazione della risorsa: <StaticResource> describes a non-HTML resource and defines a creativeType attribute that specifies how the resource is displayed:

Image/gif, image/jpeg, image/png: la risorsa viene visualizzata in un tag HTML <img>.Image/gif, image/jpeg, image/png – the resource is displayed in an HTML <img> tag.

Application/x-javascript: la risorsa viene visualizzata in un tag HTML <script>.Application/x-javascript – the resource is displayed in an HTML <script> tag.

Application/x-shockwave-flash: la risorsa viene visualizzata in un lettore Flash.Application/x-shockwave-flash – the resource is displayed in a Flash player.

IFrameResource descrive una risorsa HTML che può essere visualizzata in un IFrame.IFrameResource describes an HTML resource that can be displayed in an IFrame. HTMLResource descrive una parte di codice HTML che può essere inserita in una pagina Web.HTMLResource describes a piece of HTML code that can be inserted into a web page. TrackingEvents specifica gli eventi di rilevamento e l'URI da richiedere quando si verifica un evento.TrackingEvents specify tracking events and the URI to request when the event occurs. In questo esempio vengono rilevati gli eventi acceptInvitation e collapse.In this sample the acceptInvitation and collapse events are tracked. Per altre informazioni sull'elemento NonLinearAds e i rispettivi figli, vedere IAB.NET/VAST.For more information on the NonLinearAds element and its children, see IAB.NET/VAST. Si noti che l'elemento TrackingEvents si trova entro l'elemento NonLinearAds invece dell'elemento NonLinear.Note that the TrackingEvents element is located within the NonLinearAds element rather than the NonLinear element.

Gli annunci complementari vengono definiti entro un elemento .Companion ads are defined within a element. L'elemento può contenere uno o più elementi .The element can contain one or more elements. Ogni elemento descrive un annuncio complementare e può contenere una risorsa di tipo , , o , specificata in modo analogo a un annuncio non lineare.Each element describes a companion ad and can contain a , , or which are specified in the same way as in a nonlinear ad. Un file VAST può contenere più annunci complementari e il lettore può scegliere quello più adatto da visualizzare.A VAST file can contain multiple companion ads and the player application can choose the most appropriate ad to display. Per altre informazioni su VAST, vedere VAST 3.0.For more information about VAST, see VAST 3.0.

Uso di un file VMAP (Video Multiple Ad Playlist) digitaleUsing a Digital Video Multiple Ad Playlist (VMAP) File

Un file VMAP permette di specificare quando si verificano le interruzioni pubblicitarie, la durata di ogni interruzione, quanti annunci possono essere visualizzati in ogni interruzione e il tipo di annunci da visualizzare in un'interruzione.A VMAP file allows you to specify when ad breaks occur, how long each break is, how many ads can be displayed within a break, and what types of ads may be displayed during a break. L'esempio seguente illustra un file VMAP che definisce una singola interruzione pubblicitaria:The following in an example VMAP file that defines a single ad break:

<vmap:VMAP xmlns:vmap="http://www.iab.net/vmap-1.0" version="1.0">
  <vmap:AdBreak breakType="linear" breakId="mypre" timeOffset="start">
    <vmap:AdSource allowMultipleAds="true" followRedirects="true" id="1">
      <vmap:VASTData>
        <VAST version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="oxml.xsd">
          <Ad id="115571748">
            <InLine>
              <AdSystem version="2.0 alpha">Atlas</AdSystem>
              <AdTitle>Unknown</AdTitle>
              <Description>Unknown</Description>
              <Survey></Survey>
              <Error></Error>
              <Impression id="Atlas"><![CDATA[http://view.atdmt.com/000/sview/115571748/direct;ai.201582527;vt.2/01/634364885739970673]]></Impression>
              <Creatives>
                <Creative id="video" sequence="0" AdID="">
                  <Linear>
                    <Duration>00:00:32</Duration>
                    <MediaFiles>
                      <MediaFile apiFramework="Windows Media" id="windows_progressive_200" maintainAspectRatio="true" scaleable="true"  delivery="progressive" bitrate="200" width="400" height="300" type="video/x-ms-wmv">
                        <![CDATA[http://smf.blob.core.windows.net/samples/ads/media/XBOX_HD_DEMO_700_1_000_200_4x3.wmv]]>
                      </MediaFile>
                      <MediaFile apiFramework="Windows Media" id="windows_progressive_300" maintainAspectRatio="true" scaleable="true"  delivery="progressive" bitrate="300" width="400" height="300" type="video/x-ms-wmv">
                        <![CDATA[http://smf.blob.core.windows.net/samples/ads/media/XBOX_HD_DEMO_700_2_000_300_4x3.wmv]]>
                      </MediaFile>
                      <MediaFile apiFramework="Windows Media" id="windows_progressive_500" maintainAspectRatio="true" scaleable="true"  delivery="progressive" bitrate="500" width="400" height="300" type="video/x-ms-wmv">
                        <![CDATA[http://smf.blob.core.windows.net/samples/ads/media/XBOX_HD_DEMO_700_1_000_500_4x3.wmv]]>
                      </MediaFile>
                      <MediaFile apiFramework="Windows Media" id="windows_progressive_700" maintainAspectRatio="true" scaleable="true" delivery="progressive" bitrate="700" width="400" height="300" type="video/x-ms-wmv">
                        <![CDATA[http://smf.blob.core.windows.net/samples/ads/media/XBOX_HD_DEMO_700_2_000_700_4x3.wmv]]>
                      </MediaFile>
                    </MediaFiles>
                  </Linear>
                </Creative>
              </Creatives>
            </InLine>
          </Ad>
        </VAST>
      </vmap:VASTData>
    </vmap:AdSource>
    <vmap:TrackingEvents>
      <vmap:Tracking event="breakStart">
        http://MyServer.com/breakstart.gif
      </vmap:Tracking>
    </vmap:TrackingEvents>
  </vmap:AdBreak>
</vmap:VMAP>

Un file VMAP inizia con un elemento che include uno o più elementi , ognuno dei quali definisce un'interruzione pubblicitaria.A VMAP file begins with a element that contains one or more elements, each defining an ad break. Ogni interruzione pubblicitaria specifica un tipo di interruzione, un ID di interruzione e un offset temporale.Each ad break specifies a break type, break ID, and time offset. L'attributo breakType specifica il tipo di annuncio che può essere riprodotto durante l'interruzione: lineare, non lineare o di visualizzazione.The breakType attribute specifies the type of ad that can be played during the break: linear, nonlinear, or display. Gli annunci di visualizzazione sono mappati agli annunci complementari VAST.Display ads map to VAST companion ads. È possibile specificare più tipi di annuncio in un elenco separato da virgole (senza spazi).More than one ad type can be specified in a comma (no spaces) separated list. breakID è un identificatore facoltativo per l'annuncio.The breakID is an optional identifier for the ad. timeOffset specifica quando deve essere visualizzato l'annuncio.The timeOffset specifies when the ad should be displayed. Può essere specificato in uno dei modi seguenti:It can be specified in one of the following ways:

  1. Tempo: con formato hh:mm:ss o hh:mm:ss.mmm, dove .mmm corrisponde a millisecondi.Time – in hh:mm:ss or hh:mm:ss.mmm format where .mmm is milliseconds. Il valore di questo attributo specifica il tempo dall'inizio della sequenza temporale del video all'inizio dell'interruzione pubblicitaria.The value of this attribute specifies the time from the beginning of the video timeline to the beginning of the ad break.
  2. Percentuale: con formato n% dove n indica la percentuale della sequenza temporale del video da riprodurre prima della visualizzazione dell'annuncio.Percentage – in n% format where n is the percentage of the video timeline to play before playing the ad
  3. Inizio/Fine: specifica che un annuncio deve essere visualizzato prima o dopo la visualizzazione del video.Start/End – specifies that an ad should be displayed before or after the video has been displayed
  4. Posizione: specifica l'ordine delle interruzioni pubblicitarie quando la tempistica delle interruzioni pubblicitarie è sconosciuta ad esempio nello streaming live.Position – specifies the order of ad breaks when the timing of the ad breaks is unknown, such as in live streaming. L'ordine di ogni interruzione è specificato con il formato #n dove n è un valore Integer pari a 1 o superiore.The order of each ad break is specified in the #n format where n is an integer 1 or greater. 1 indica che l'annuncio deve essere riprodotto alla prima opportunità, 2 indica che l'annuncio deve essere riprodotto alla seconda opportunità e così via.1 signifies the ad should be played at the first opportunity, 2 signifies the ad should be played at the second opportunity and so on.

Nell'elemento <AdBreak> può essere presente un elemento <AdSource>.Within the <AdBreak> element there can be one <AdSource> element. L'elemento <AdSource> contiene gli attributi seguenti:The <AdSource> element contains the following attributes:

  1. ID: specifica un identificatore per l'origine dell'annuncio.Id – specifies an identifier for the ad source
  2. allowMultipleAds: valore booleano che specifica se è possibile visualizzare più annunci durante l'interruzione pubblicitaria.allowMultipleAds – a Boolean value that specifies whether multiple ads can be displayed during the ad break
  3. followRedirects: valore booleano facoltativo che specifica se il lettore deve rispettare i reindirizzamenti in una risposta annuncio.followRedirects – an optional Boolean value that specifies if the video player should honor redirects within an ad response

L'elemento <AdSource> fornisce al lettore una risposta inline all'annuncio o un riferimento a una risposta annuncio.The <AdSource> element provides the player an inline ad response or a reference to an ad response. Può contenere uno degli elementi seguenti:It can contain one of the following elements:

  • indica che una risposta annuncio VAST è incorporata nel file VMAP. indicates a VAST ad response is embedded within the VMAP file
  • : un URI che fa riferimento a una risposta annuncio da un altro sistema. a URI that references an ad response from another system
  • : -una stringa arbitraria che rappresenta una risposta non VAST. -an arbitrary string that respresents a non-VAST response

In questo esempio una risposta annuncio inline è specificata con un elemento che contiene una risposta annuncio VAST.In this example an in-line ad response is specified with a element that contains a VAST ad response. Per altre informazioni sugli altri elementi, vedere VMAP.For more information about the other elements, see VMAP.

L'elemento <AdBreak> può contenere anche un elemento <TrackingEvents>.The <AdBreak> element can also contain one <TrackingEvents> element. L'elemento <TrackingEvents> permette di rilevare l'inizio o la fine di un'interruzione pubblicitaria o eventuali errori verificatisi durante l'interruzione pubblicitaria.The <TrackingEvents> element allows you to track the start or end of an ad break or whether an error occurred during the ad break. L'elemento <TrackingEvents> contiene uno o più elementi <Tracking>, ognuno dei quali specifica un evento di rilevamento e un URI di rilevamento.The <TrackingEvents> element contains one or more <Tracking> elements, each of which specifies a tracking event and a tracking URI. Di seguito sono elencati gli eventi di rilevamento possibili:The possible tracking events are:

  1. breakStart: rileva l'inizio di un'interruzione pubblicitaria.breakStart – tracks the beginning of an ad break
  2. breakEnd: rileva il completamento di un'interruzione pubblicitaria.breakEnd – track the completion of an ad break
  3. error: rileva un errore verificatosi durante l'interruzione pubblicitaria.error – tracks an error that occurred during the ad break

L'esempio seguente mostra un file VMAP che specifica gli eventi di rilevamento.The following example shows a VMAP file that specifies tracking events

<vmap:VMAP xmlns:vmap="http://www.iab.net/vmap-1.0" version="1.0">
  <vmap:AdBreak breakType="linear" breakId="mypre" timeOffset="start">
    <vmap:AdSource allowMultipleAds="true" followRedirects="true" id="1">
      <vmap:VASTData>
        <!--Inline VAST -->
      </vmap:VASTData>
    </vmap:AdSource>
    <vmap:TrackingEvents>
      <vmap:Tracking event="breakStart">
        http://MyServer.com/breakstart.gif
      </vmap:Tracking>
      <vmap:Tracking event="breakend">
        http://MyServer.com/breakend.gif
      </vmap:Tracking>
      <vmap:Tracking event="error">
        http://MyServer.com/error.gif
      </vmap:Tracking>
    </vmap:TrackingEvents>
  </vmap:AdBreak>
</vmap:VMAP>

Per altre informazioni sull'elemento <TrackingEvents> e i rispettivi elementi figlio, vedere http://iab.org/VMAP.pdfFor more information on the <TrackingEvents> element and its children, see http://iab.org/VMAP.pdf

Uso di un file MAST (Media Abstract Sequencing Template)Using a Media Abstract Sequencing Template (MAST) File

Un file MAST permette di specificare i trigger che definiscono il momento in cui è visualizzato un annuncio.A MAST file allows you to specify triggers that define when an ad is displayed. Di seguito è riportato un file MAST di esempio che contiene trigger per un annuncio di tipo preroll, midroll e postroll.The following is an example MAST file that contains triggers for a pre roll ad, a mid-roll ad, and a post-roll ad.

<MAST xsi:schemaLocation="http://openvideoplayer.sf.net/mast http://openvideoplayer.sf.net/mast/mast.xsd" xmlns="http://openvideoplayer.sf.net/mast" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <triggers>
    <trigger id="preroll" description="preroll every item"  >
      <startConditions>
        <condition type="event" name="OnItemStart" />
      </startConditions>
      <sources>
        <source uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" format="vast">
          <sources />
        </source>
      </sources>
    </trigger>

    <trigger id="midroll" description="midroll at 15 sec."  >
      <startConditions>
        <condition type="property" name="Position" value="00:00:15.0" operator="GEQ" />
      </startConditions>
      <endConditions>
        <condition type="event" name="OnItemEnd"/>
        <!--This 'resets' the trigger for the next clip-->
      </endConditions>
      <sources>
        <source uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" format="vast">
          <sources />
        </source>
      </sources>
    </trigger>

    <trigger id="postroll" description="postroll"  >
      <startConditions>
        <condition type="event" name="OnItemEnd"/>
      </startConditions>
      <sources>
        <source uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" format="vast">
          <sources />
        </source>
      </sources>
    </trigger>
  </triggers>
</MAST>

Un file MAST inizia con un elemento MAST che contiene un elemento triggers.A MAST file begins with a MAST element that contains one triggers element. L'elemento contiene uno o più elementi trigger che definiscono quando deve essere riprodotto un annuncio.The element contains one or more trigger elements that define when an ad should be played.

L'elemento trigger contiene un elemento startConditions che specifica quando deve iniziare la riproduzione di un annuncio.The trigger element contains a startConditions element which specify when an ad should begin to play. L'elemento startConditions contiene uno o più elementi .The startConditions element contains one or more elements. Quando ogni elemento restituisce true, sarà avviato o revocato un trigger, rispettivamente in base alla presenza di in un elemento startConditions o endConditions.When each evaluates to true a trigger is initiated or revoked depending upon whether the is contained within a startConditions or endConditions element respectively. Se sono presenti più elementi , saranno considerati come OR implicito e qualsiasi condizione che restituisce true provocherà l'avvio del trigger.When multiple elements are present, they are treated as an implicit OR, any condition evaluating to true will cause the trigger to initiate. Gli elementi possono essere annidati. elements can be nested. Quando gli elementi figlio sono preimpostati, sono considerati come AND implicito e per l'avvio del trigger tutte le condizioni devono restituire true.When child elements are preset, they are treated as an implicit AND, all conditions must evaluate to true for the trigger to initiate. L'elemento contiene gli attributi seguenti che definiscono la condizione:The element contains the following attributes that define the condition:

  1. type - specifica il tipo di condizione, di evento o di proprietà.type – specifies the type of condition, event or property
  2. name - nome della proprietà o dell'evento da usare durante la valutazione.name – the name of the property or event to be used during evaluation
  3. value – valore in base al quale sarà valutata una proprietà.value – the value that a property will be evaluated against
  4. operator : operazione da usare durante la valutazione: EQ (uguale), NEQ (diverso da), GTR (maggiore), GEQ (maggiore o uguale), LT (minore), LEQ (minore o uguale), MOD (modulo).operator – the operation to use during evaluation: EQ (equal), NEQ (not equal), GTR (greater), GEQ (greater or equal), LT (Less than), LEQ (less than or equal), MOD (modulo)

endConditions contengono anche elementi .endConditions also contain elements. Quando una condizione restituisce true, il trigger viene reimpostato. L'elemento contiene anche un elemento che include uno o più elementi .When a condition evaluates to true the trigger is reset.The element also contains a element that contains one or more elements. Gli elementi definiscono l'URI per la risposta annuncio e il tipo della risposta annuncio.The elements define the URI to the ad response and the type of ad response. In questo esempio si assegna un URI a una risposta VAST.In this example a URI is given to a VAST response.

<trigger id="postroll" description="postroll"  >
  <startConditions>
    <condition/>
  </startConditions>
  <sources>
    <source uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" format="vast">
      <sources />
    </source>
  </sources>
</trigger>

Uso di VPAID (Video Player-Ad Interface Definition)Using Video Player-Ad Interface Definition (VPAID)

VPAID è un'API che permette alle unità di annuncio eseguibili di comunicare con un lettore video.VPAID is an API for enabling executable ad units to communicate with a video player. Ciò offre esperienze altamente interattive per gli annunci.This allows highly interactive ad experiences. L'utente può interagire con l'annuncio e l'annuncio può rispondere alle azioni eseguite dall'utente.The user can interact with the ad and the ad can respond to actions taken by the viewer. Ad esempio, un annuncio può mostrare pulsanti che permettono all'utente di visualizzare altre informazioni o una versione più lunga dell'annuncio.For example an ad may display buttons that allow the user to view more information or a longer version of the ad. Il lettore video deve supportare l'API VPAID e l'annuncio eseguibile la deve implementare.The video player must support the VPAID API and the executable ad must implement the API. Quando un lettore richiede un annuncio da un ad server, è possibile che il server risponda con una risposta VAST contenente un annuncio VPAID.When a player requests an ad from an ad server the server may respond with a VAST response that contains a VPAID ad.

Un annuncio eseguibile è creato in codice che deve essere eseguito in un ambiente di runtime, ad esempio Adobe Flash™ o JavaScript eseguibile in un Web browser.An executable ad is created in code that must be executed in a runtime environment such as Adobe Flash™ or JavaScript that can be executed in a web browser. Quando un ad server restituisce una risposta VAST contenente un annuncio VPAID, il valore dell'attributo apiFramework nell'elemento deve essere "VPAID".When an ad server returns a VAST response containing a VPAID ad, the value of the apiFramework attribute in the element must be “VPAID”. Questo attributo specifica che l'annuncio incluso è un annuncio eseguibile VPAID.This attribute specifies that the contained ad is a VPAID executable ad. L'attributo type deve essere impostato sul tipo MIME dell'eseguibile, ad esempio "application/x-shockwave-flash" o "application/x-javascript".The type attribute must be set to the MIME type of the executable, such as “application/x-shockwave-flash” or “application/x-javascript”. Il frammento di codice XML seguente mostra l'elemento da una risposta VAST contenente un annuncio eseguibile VPAID.The following XML snippet shows the element from a VAST response containing a VPAID executable ad.

<MediaFiles>
   <MediaFile id="1" delivery="progressive" type=”application/x-shockwaveflash”
              width=”640” height=”480” apiFramework=”VPAID”>
       <!-- CDATA wrapped URI to executable ad -->
   </MediaFile>
</MediaFiles>

Un annuncio eseguibile può essere inizializzato mediante l'elemento negli elementi o in una risposta VAST.An executable ad can be initialized using the element within the or elements in a VAST response. Per altre informazioni sull'elemento , vedere VAST 3.0.For more information on the element, see VAST 3.0. Per altre informazioni sull'API VPAID, vedere VPAID 2.0.For more information about the VPAID API, see VPAID 2.0.

Implementazione di un lettore Windows o Windows Phone 8 con supporto per gli annunciImplementing a Windows or Windows Phone 8 Player with Ad Support

Microsoft Media Platform: Player Framework per Windows 8 e Windows Phone 8 contiene una raccolta di applicazioni di esempio che illustrano come implementare un'applicazione per la lettura di video tramite il framework.The Microsoft Media Platform: Player Framework for Windows 8 and Windows Phone 8 contains a collection of sample applications that show you how to implement a video player application using the framework. È possibile scaricare Player Framework e i relativi esempi dalla pagina relativa a Player Framework per Windows 8 e Windows Phone 8.You can download the Player Framework and the samples from Player Framework for Windows 8 and Windows Phone 8.

Quando si apre la soluzione Microsoft.PlayerFramework.Xaml.Samples, verrà visualizzato un numero di cartelle all'interno del progetto.When you open the Microsoft.PlayerFramework.Xaml.Samples solution you will see a number of folders within the project. La cartella Advertising contiene il codice di esempio necessario per la creazione di un lettore video con supporto per gli annunci.The Advertising folder contains the sample code relevant to creating a video player with ad support. All'interno della cartella Advertising è presente un numero di file XAML/cs, ognuno dei quali mostra come inserire gli annunci in una specifica modalità.Inside the Advertising folder is a number of XAML/cs files each of which show how to insert ads in a different way. L'elenco seguente descrive i singoli file:The following list describes each:

  • AdPodPage.xaml - Mostra come visualizzare un podcast annuncio.AdPodPage.xaml Shows how to display an ad pod.
  • AdSchedulingPage.xaml - Mostra come pianificare annunci.AdSchedulingPage.xaml Shows how to schedule ads.
  • FreeWheelPage.xaml - Mostra come usare il plug-in FreeWheel per pianificare annunciFreeWheelPage.xaml Shows how to use the FreeWheel plugin to schedule ads.
  • MastPage.xaml - Mostra come pianificare annunci con un file MAST.MastPage.xaml Shows how to schedule ads with a MAST file.
  • ProgrammaticAdPage.xaml - Mostra come pianificare la visualizzazione di annunci in un video a livello di codice.ProgrammaticAdPage.xaml Shows how to programmatically schedule ads into a video.
  • ScheduleClipPage.xaml - Mostra come pianificare un annuncio senza usare un file VAST.ScheduleClipPage.xaml Shows how to schedule an ad without a VAST file.
  • VastLinearCompanionPage.xaml - Mostra come inserire annunci lineari e annunci complementari.VastLinearCompanionPage.xaml Shows how to insert a linear and companion ad.
  • VastNonLinearPage.xaml - Mostra come inserire un annuncio non lineare.VastNonLinearPage.xaml Shows how to insert a non-linear ad.
  • VmapPage.xaml - Mostra come specificare annunci con un file VMAP.VmapPage.xaml Shows how to specify ads with a VMAP file.

Ognuno di questi esempi usa la classe MediaPlayer definita da Player Framework.Each of these samples uses the MediaPlayer class defined by the player framework. Nella maggior parte degli esempi vengono usati plug-in che aggiungono supporto per vari formati di risposta annuncio.Most samples use plugins that add support for various ad response formats. L'esempio ProgrammaticAdPage interagisce a livello di codice con un'istanza MediaPlayer.The ProgrammaticAdPage sample programmatically interacts with a MediaPlayer instance.

Esempio AdPodPageAdPodPage Sample

Questo esempio usa AdSchedulerPlugin per definire quando visualizzare un annuncio.This sample uses the AdSchedulerPlugin to define when to display an ad. In questo esempio viene pianificata la riproduzione di un annuncio midroll dopo 5 secondi.In this example a mid-roll advertisement is scheduled to be played after 5 seconds. Il podcast annuncio (ossia un gruppo di annunci visualizzati in ordine) è specificato in un file VAST restituito da un ad server.The ad pod (a group of ads to display in order) is specified in a VAST file returned from an ad server. L'URI per il file VAST è specificato nell'elemento .The URI to the VAST file is specified in the element.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">

    <mmppf:MediaPlayer.Plugins>
        <ads:AdSchedulerPlugin>
            <ads:AdSchedulerPlugin.Advertisements>

                <ads:MidrollAdvertisement Time="00:00:05">
                    <ads:MidrollAdvertisement.Source>
                        <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_adpod.xml" Type="vast"/>
                    </ads:MidrollAdvertisement.Source>
                </ads:MidrollAdvertisement>

            </ads:AdSchedulerPlugin.Advertisements>
        </ads:AdSchedulerPlugin>
        <ads:AdHandlerPlugin/>
    </mmppf:MediaPlayer.Plugins>
</mmppf:MediaPlayer>

Per altre informazioni su AdSchedulerPlugin, vedere la pagina relativa all' inserimento di annunci in Player Framework su Windows 8 e Windows Phone 8For more information about the AdSchedulerPlugin, see Advertising in the Player Framework on Windows 8 and Windows Phone 8

AdSchedulingPageAdSchedulingPage

Questo esempio usa AdSchedulerPlugin.This sample also uses the AdSchedulerPlugin. Vengono pianificati tre annunci, un annuncio preroll, un annuncio midroll e un annuncio postroll.It schedules three ads, a pre-roll ad, a mid-roll ad, and a post-roll ad. L'URI per il VAST per ciascuno di essi è specificato in un elemento .The URI to the VAST for each ad is specified in a element.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:AdSchedulerPlugin>
                    <ads:AdSchedulerPlugin.Advertisements>

                        <ads:PrerollAdvertisement>
                            <ads:PrerollAdvertisement.Source>
                                <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" Type="vast"/>
                            </ads:PrerollAdvertisement.Source>
                        </ads:PrerollAdvertisement>

                        <ads:MidrollAdvertisement Time="00:00:15">
                            <ads:MidrollAdvertisement.Source>
                                <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" Type="vast"/>
                            </ads:MidrollAdvertisement.Source>
                        </ads:MidrollAdvertisement>

                        <ads:PostrollAdvertisement>
                            <ads:PostrollAdvertisement.Source>
                                <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml" Type="vast"/>
                            </ads:PostrollAdvertisement.Source>
                        </ads:PostrollAdvertisement>

                    </ads:AdSchedulerPlugin.Advertisements>
                </ads:AdSchedulerPlugin>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

FreeWheelPageFreeWheelPage

Questo esempio usa FreeWheelPlugin, che specifica un attributo Source che a sua volta specifica un URI che punta a un file SmartXML in cui è specificato il contenuto dell'annuncio, oltre alle informazioni di pianificazione.This sample uses the FreeWheelPlugin which specifies a Source attribute that specifies a URI that points to a SmartXML file that specifies ad content as well as ad scheduling information.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:FreeWheelPlugin Source="http://smf.blob.core.windows.net/samples/win8/ads/freewheel.xml"/>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

MastPageMastPage

Questo esempio usa MastSchedulerPlugin, che consente di usare un file MAST.This sample uses the MastSchedulerPlugin that allows you to use a MAST file. L'attributo Source specifica il percorso del file MAST.The Source attribute specifies the location of the MAST file.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:MastSchedulerPlugin Source="http://smf.blob.core.windows.net/samples/win8/ads/mast.xml" />
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

ProgrammaticAdPageProgrammaticAdPage

Questo esempio interagisce a livello di codice con MediaPlayer.This sample programmatically interacts with the MediaPlayer. Il file ProgrammaticAdPage.xaml crea un'istanza di MediaPlayer:The ProgrammaticAdPage.xaml file instantiates the MediaPlayer:

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4"/>

Il file ProgrammaticAdPage.xaml.cs crea un oggetto AdHandlerPlugin, aggiunge un elemento TimelineMarker per specificare quando un annuncio deve essere visualizzato, quindi aggiunge un gestore per l'evento MarkerReached che carica un oggetto RemoteAdSource specificando un URI a un file VAST, quindi riproduce l'annuncio.The ProgrammaticAdPage.xaml.cs file creates an AdHandlerPlugin, adds a TimelineMarker to specify when an ad should be displayed, and then adds a handler for the MarkerReached event which loads a RemoteAdSource specifying a URI to a VAST file, and then plays the ad.

public sealed partial class ProgrammaticAdPage : Microsoft.PlayerFramework.Samples.Common.LayoutAwarePage
    {
        AdHandlerPlugin adHandler;

        public ProgrammaticAdPage()
        {
            this.InitializeComponent();
            adHandler = new AdHandlerPlugin();
            player.Plugins.Add(new AdHandlerPlugin());
            player.Markers.Add(new TimelineMarker() { Time = TimeSpan.FromSeconds(5), Type = "myAd" });
            player.MarkerReached += pf_MarkerReached;
        }

        async void pf_MarkerReached(object sender, TimelineMarkerRoutedEventArgs e)
        {
            if (e.Marker.Type == "myAd")
            {
                var adSource = new RemoteAdSource() { Type = VastAdPayloadHandler.AdType, Uri = new Uri("http://smf.blob.core.windows.net/samples/win8/ads/vast_linear.xml") };
                //var adSource = new AdSource() { Type = DocumentAdPayloadHandler.AdType, Payload = SampleAdDocument };
                var progress = new Progress<AdStatus>();
                try
                {
                    await player.PlayAd(adSource, progress, CancellationToken.None);
                }
                catch { /* ignore */ }
            }
        }

ScheduleClipPageScheduleClipPage

Questo esempio usa AdSchedulerPlugin per pianificare un annuncio midroll specificando un file con estensione wmv contenente l'annuncio.This sample uses the AdSchedulerPlugin to schedule a mid-roll ad by specifying a .wmv file that contains the ad.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.cloudapp.net/html5/media/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:AdSchedulerPlugin>
                    <ads:AdSchedulerPlugin.Advertisements>

                        <ads:MidrollAdvertisement Time="00:00:05">
                            <ads:MidrollAdvertisement.Source>
                                <ads:AdSource Type="clip">
                                    <ads:AdSource.Payload>
                                        <ads:ClipAdPayload MediaSource="http://smf.blob.core.windows.net/samples/ads/media/XBOX_HD_DEMO_700_2_000_700_4x3.wmv" MimeType="video/x-ms-wmv" />
                                    </ads:AdSource.Payload>
                                </ads:AdSource>
                            </ads:MidrollAdvertisement.Source>
                        </ads:MidrollAdvertisement>

                    </ads:AdSchedulerPlugin.Advertisements>
                </ads:AdSchedulerPlugin>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

VastLinearCompanionPageVastLinearCompanionPage

L'esempio illustra come usare AdSchedulerPlugin per pianificare un annuncio lineare midroll con un annuncio complementare.This sample illustrates how to use the AdSchedulerPlugin to schedule a mid-roll linear ad with an companion ad. L'elemento specifica il percorso del file VAST.The element specifies the location of the VAST file.

<mmppf:MediaPlayer Grid.Row="1"  x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:AdSchedulerPlugin>
                    <ads:AdSchedulerPlugin.Advertisements>

                        <ads:MidrollAdvertisement Time="00:00:05">
                            <ads:MidrollAdvertisement.Source>
                                <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear_companions.xml" Type="vast"/>
                            </ads:MidrollAdvertisement.Source>
                        </ads:MidrollAdvertisement>

                    </ads:AdSchedulerPlugin.Advertisements>
                </ads:AdSchedulerPlugin>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

VastLinearNonLinearPageVastLinearNonLinearPage

Questo esempio usa l'elemento AdSchedulerPlugin per pianificare un annuncio lineare e uno non lineare.This sample uses the AdSchedulerPlugin to schedule a linear and a non-linear ad. Il percorso del file VAST è specificato nell'elemento .The VAST file location is specified with the element.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:AdSchedulerPlugin>
                    <ads:AdSchedulerPlugin.Advertisements>

                        <ads:MidrollAdvertisement Time="00:00:05">
                            <ads:MidrollAdvertisement.Source>
                                <ads:RemoteAdSource Uri="http://smf.blob.core.windows.net/samples/win8/ads/vast_linear_nonlinear.xml" Type="vast"/>
                            </ads:MidrollAdvertisement.Source>
                        </ads:MidrollAdvertisement>

                    </ads:AdSchedulerPlugin.Advertisements>
                </ads:AdSchedulerPlugin>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

VMAPPageVMAPPage

Questo esempio usa l'elemento VmapSchedulerPlugin per pianificare annunci usando un file VMAP.This samples uses the VmapSchedulerPlugin to schedule ads using a VMAP file. L'URI al file VMAP è specificato nell'attributo Source dell'elemento .The URI to the VMAP file is specified in the Source attribute of the element.

<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/bigbuck.mp4">
            <mmppf:MediaPlayer.Plugins>
                <ads:VmapSchedulerPlugin Source="http://smf.blob.core.windows.net/samples/win8/ads/vmap.xml"/>
                <ads:AdHandlerPlugin/>
            </mmppf:MediaPlayer.Plugins>
        </mmppf:MediaPlayer>

Implementazione di un lettore video iOS con supporto per gli annunciImplementing an iOS Video Player with Ad Support

Microsoft Media Platform: Player Framework per iOS contiene una raccolta di applicazioni di esempio che illustrano come implementare un'applicazione per la lettura di video tramite il framework.The Microsoft Media Platform: Player Framework for iOS contains a collection of sample applications that show you how to implement a video player application using the framework. È possibile scaricare Player Framework e i relativi esempi dalla pagina relativa a Media Player Framework di Azure.You can download the Player Framework and the samples from Azure Media Player Framework. La pagina di GitHub include un collegamento a una pagina Wiki che contiene informazioni aggiuntive su player framework e un'introduzione all'esempio del lettore, ovvero la pagina Wiki su Media Player di Azure.The github page has a link to a Wiki that contains additional information on the player framework and an introduction to the player sample: Azure Media Player Wiki.

Pianificazione di annunci con VMAPScheduling Ads with VMAP

L'esempio seguente illustra come pianificare gli annunci usando un file VMAP.The following example shows how to schedule ads using a VMAP file.

// How to schedule an Ad using VMAP.
//First download the VMAP manifest

if (![framework.adResolver downloadManifest:&manifest withURL:[NSURL URLWithString:@"http://portalvhdsq3m25bf47d15c.blob.core.windows.net/vast/PlayerTestVMAP.xml"]])
        {
            [self logFrameworkError];
        }
        else
        {
            // Schedule a list of ads using the downloaded VMAP manifest
            if (![framework scheduleVMAPWithManifest:manifest])
            {
                [self logFrameworkError];
            }          
        }

Pianificazione di annunci con VASTScheduling Ads with VAST

L'esempio seguente illustra come pianificare un annuncio VAST ad associazione tardiva.The following sample shows how to schedule a late binding VAST ad.

//Example:3 How to schedule a late binding VAST ad.
// set the start time for the ad
adLinearTime.startTime = 13;
adLinearTime.duration = 0;
// Specify the URI of the VAST file
NSString *vastAd1=@"http://portalvhdsq3m25bf47d15c.blob.core.windows.net/vast/PlayerTestVAST.xml";
// Create an AdInfo object
 AdInfo *vastAdInfo1 = [[[AdInfo alloc] init] autorelease];
// set URL to VAST file
vastAdInfo1.clipURL = [NSURL URLWithString:vastAd1];
// set running time of ad
vastAdInfo1.mediaTime = [[[MediaTime alloc] init] autorelease];
vastAdInfo1.mediaTime.clipBeginMediaTime = 0;
vastAdInfo1.mediaTime.clipEndMediaTime = 10;
vastAdInfo1.policy = @"policy for late binding VAST";
// specify ad type
vastAdInfo1.type = AdType_Midroll;
vastAdInfo1.appendTo=-1;
adIndex = 0;
// schedule ad
if (![framework scheduleClip:vastAdInfo1 atTime:adLinearTime forType:PlaylistEntryType_VAST andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio VAST ad associazione anticipata.The following sample shows how to schedule an early binding VAST ad. //Example:4 Schedule an early binding VAST ad //Download the VAST file if (![framework.adResolver downloadManifest:&manifest withURL:[NSURL URLWithString:@"http://portalvhdsq3m25bf47d15c.blob.core.windows.net/vast/PlayerTestVAST.xml"]]) { [self logFrameworkError]; } else { adLinearTime.startTime = 7; adLinearTime.duration = 0;//Example:4 Schedule an early binding VAST ad //Download the VAST file if (![framework.adResolver downloadManifest:&manifest withURL:[NSURL URLWithString:@"http://portalvhdsq3m25bf47d15c.blob.core.windows.net/vast/PlayerTestVAST.xml"]]) { [self logFrameworkError]; } else { adLinearTime.startTime = 7; adLinearTime.duration = 0;

    // Create AdInfo instance
    AdInfo *vastAdInfo2 = [[[AdInfo alloc] init] autorelease];
    vastAdInfo2.mediaTime = [[[MediaTime alloc] init] autorelease];
    vastAdInfo2.policy = @"policy for early binding VAST";
    // specify ad type
    vastAdInfo2.type = AdType_Midroll;
    vastAdInfo2.appendTo=-1;
    // schedule ad
    if (![framework scheduleVASTClip:vastAdInfo2 withManifest:manifest atTime:adLinearTime andGetClipId:&adIndex])
    {
        [self logFrameworkError];
    }
}

L'esempio seguente illustra come inserire un annuncio usando Rough Cut Editing (RCE)The following sample shows how to insert an ad using Rough Cut Editing (RCE)

//Example:1 How to use RCE.
// specify manifest for ad content
NSString *secondContent=@"http://wamsblureg001orig-hs.cloudapp.net/6651424c-a9d1-419b-895c-6993f0f48a26/The%20making%20of%20Microsoft%20Surface-m3u8-aapl.ism/Manifest(format=m3u8-aapl)";

// specify ad length
mediaTime.currentPlaybackPosition = 0;
mediaTime.clipBeginMediaTime = 0;
mediaTime.clipEndMediaTime = 80;
// append ad content
if (![framework appendContentClip:[NSURL URLWithString:secondContent] withMediaTime:mediaTime andGetClipId:&clipId])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un podcast annuncio.The following example shows how to schedule an ad pod.

//Example:5 Schedule an ad Pod.
// Set start time for ad
adLinearTime.startTime = 23;
adLinearTime.duration = 0;

// Specify URL to content
NSString *adpodSt1=@"https://portalvhdsq3m25bf47d15c.blob.core.windows.net/asset-e47b43fd-05dc-4587-ac87-5916439ad07f/Windows%208_%20Cliffjumpers.mp4?st=2012-11-28T16%3A31%3A57Z&se=2014-11-28T16%3A31%3A57Z&sr=c&si=2a6dbb1e-f906-4187-a3d3-7e517192cbd0&sig=qrXYZBekqlbbYKqwovxzaVZNLv9cgyINgMazSCbdrfU%3D";
// Create an AdInfo instance
AdInfo *adpodInfo1 = [[[AdInfo alloc] init] autorelease];
// set URI to ad content
adpodInfo1.clipURL = [NSURL URLWithString:adpodSt1];
// Set ad running time
adpodInfo1.mediaTime = [[[MediaTime alloc] init] autorelease];
adpodInfo1.mediaTime.clipBeginMediaTime = 0;
adpodInfo1.mediaTime.clipEndMediaTime = 17;
adpodInfo1.policy = @"policy for ad pod 1";
// Set ad type
adpodInfo1.type = AdType_Midroll;
adpodInfo1.appendTo=-1;
adIndex = 0;
// Schedule ad
if (![framework scheduleClip:adpodInfo1 atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio midroll temporaneo.The following example shows how to schedule a non-sticky mid-roll ad. Un annuncio temporaneo viene riprodotto solo una volta, indipendentemente da qualsiasi ricerca eseguita dal visualizzatore.A non-sticky ad is only played once regardless of any seeking the viewer performs.

//Example:6 Schedule a single non sticky mid roll Ad
// specify URL to content
NSString *oneTimeAd=@"http://wamsblureg001orig-hs.cloudapp.net/5389c0c5-340f-48d7-90bc-0aab664e5f02/Windows%208_%20You%20and%20Me%20Together-m3u8-aapl.ism/Manifest(format=m3u8-aapl)";

// create an AdInfo instance
AdInfo *oneTimeInfo = [[[AdInfo alloc] init] autorelease];
// set URL of ad
oneTimeInfo.clipURL = [NSURL URLWithString:oneTimeAd];
oneTimeInfo.mediaTime = [[[MediaTime alloc] init] autorelease];
oneTimeInfo.mediaTime.clipBeginMediaTime = 0;
oneTimeInfo.mediaTime.clipEndMediaTime = -1;
oneTimeInfo.policy = @"policy for one-time ad";
// set ad start time
adLinearTime.startTime = 43;
adLinearTime.duration = 0;
// set ad type
oneTimeInfo.type = AdType_Midroll;
// non sticky ad
oneTimeInfo.deleteAfterPlayed = YES;
// schedule ad
if (![framework scheduleClip:oneTimeInfo atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio midroll permanente.The following example shows how to schedule a sticky mid-roll ad. Un annuncio permanente verrà visualizzato ogni volta che viene raggiunto il punto specificato nella sequenza temporale del video.A sticky ad will be displayed each time the specified point on the video timeline is reached.

//Example:7 Schedule a single sticky mid roll Ad
NSString *stickyAd=@"http://wamsblureg001orig-hs.cloudapp.net/2e4e7d1f-b72a-4994-a406-810c796fc4fc/The%20Surface%20Movement-m3u8-aapl.ism/Manifest(format=m3u8-aapl)";
// create AdInfo instance
AdInfo *stickyAdInfo = [[[AdInfo alloc] init] autorelease];
// set URI to ad
stickyAdInfo.clipURL = [NSURL URLWithString:stickyAd];
stickyAdInfo.mediaTime = [[[MediaTime alloc] init] autorelease];
stickyAdInfo.mediaTime.clipBeginMediaTime = 0;
stickyAdInfo.mediaTime.clipEndMediaTime = 15;
stickyAdInfo.policy = @"policy for sticky mid-roll ad";
// set ad start time
adLinearTime.startTime = 64;
adLinearTime.duration = 0;
// set ad type
stickyAdInfo.type = AdType_Midroll;
stickyAdInfo.deleteAfterPlayed = NO;
// schedule ad
if (![framework scheduleClip:stickyAdInfo atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio postroll.The following sample shows how to schedule a post-roll ad.

//Example:8 Schedule Post Roll Ad
NSString *postAdURLString=@"http://wamsblureg001orig-hs.cloudapp.net/aa152d7f-3c54-487b-ba07-a58e0e33280b/wp-m3u8-aapl.ism/Manifest(format=m3u8-aapl)";
// create AdInfo instance
AdInfo *postAdInfo = [[[AdInfo alloc] init] autorelease];
postAdInfo.clipURL = [NSURL URLWithString:postAdURLString];
postAdInfo.mediaTime = [[[MediaTime alloc] init] autorelease];
postAdInfo.mediaTime.clipBeginMediaTime = 0;
// set ad length
postAdInfo.mediaTime.clipEndMediaTime = 45;
postAdInfo.policy = @"policy for post-roll ad";
// set ad type
postAdInfo.type = AdType_Postroll;
adLinearTime.duration = 0;
if (![framework scheduleClip:postAdInfo atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio preroll.The following sample shows how to schedule a pre-roll ad.

//Example:9 Schedule Pre Roll Ad
NSString *adURLString = @"http://wamsblureg001orig-hs.cloudapp.net/2e4e7d1f-b72a-4994-a406-810c796fc4fc/The%20Surface%20Movement-m3u8-aapl.ism/Manifest(format=m3u8-aapl)";
AdInfo *adInfo = [[[AdInfo alloc] init] autorelease];
adInfo.clipURL = [NSURL URLWithString:adURLString];
adInfo.mediaTime = [[[MediaTime alloc] init] autorelease];
adInfo.mediaTime.currentPlaybackPosition = 0;
adInfo.mediaTime.clipBeginMediaTime = 40; //You could play a portion of an Ad. Yeh!
adInfo.mediaTime.clipEndMediaTime = 59;
adInfo.policy = @"policy for pre-roll ad";
adInfo.appendTo = -1;
adInfo.type = AdType_Preroll;
adLinearTime.duration = 0;
// schedule ad
if (![framework scheduleClip:adInfo atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

L'esempio seguente illustra come pianificare un annuncio midroll sovrapposto.The following sample shows how to schedule a mid-roll overlay ad.

// Example10: Schedule a Mid Roll overlay Ad
NSString *adURLString = @"https://portalvhdsq3m25bf47d15c.blob.core.windows.net/asset-e47b43fd-05dc-4587-ac87-5916439ad07f/Windows%208_%20Cliffjumpers.mp4?st=2012-11-28T16%3A31%3A57Z&se=2014-11-28T16%3A31%3A57Z&sr=c&si=2a6dbb1e-f906-4187-a3d3-7e517192cbd0&sig=qrXYZBekqlbbYKqwovxzaVZNLv9cgyINgMazSCbdrfU%3D";
//Create AdInfo instance
AdInfo *adInfo = [[[AdInfo alloc] init] autorelease];
adInfo.clipURL = [NSURL URLWithString:adURLString];
adInfo.mediaTime = [[[MediaTime alloc] init] autorelease];
adInfo.mediaTime.currentPlaybackPosition = 0;
adInfo.mediaTime.clipBeginMediaTime = 0;
// specify ad length
adInfo.mediaTime.clipEndMediaTime = 20;
adInfo.policy = @"policy for mid-roll overlay ad";
adInfo.appendTo = -1;
// specify ad type
adInfo.type = AdType_Midroll;
// specify ad start time & duration
adLinearTime.startTime = 300;
adLinearTime.duration = 20;
// schedule ad            if (![framework scheduleClip:adInfo atTime:adLinearTime forType:PlaylistEntryType_Media andGetClipId:&adIndex])
{
    [self logFrameworkError];
}

Percorsi di apprendimento di Servizi multimedialiMedia Services learning paths

Altre informazioni sui percorsi di apprendimento di Servizi multimediali di Azure:Read about the Azure Media Services learning paths:

Fornire commenti e suggerimentiProvide feedback

Usare il forum di suggerimenti degli utenti per fornire commenti e suggerimenti su come migliorare Servizi multimediali di Azure.Use the User Voice forum to provide feedback and make suggestions on how to improve Azure Media Services. È anche possibile passare direttamente a una delle categorie seguenti:You also can go directly to one of the following categories:

Vedere ancheSee Also

Sviluppo di applicazioni di lettore videoDevelop video player applications