Signalisation de métadonnées chronométrées dans une vidéo en flux continuSignaling Timed Metadata in Live Streaming

Dernière mise à jour : 2019-08-22Last Updated: 2019-08-22

Notation de conformitéConformance Notation

« DOIT », « NE DOIT PAS », « OBLIGATOIRE », « DEVRA », « NE DEVRA PAS », « DEVRAIT », « NE DEVRAIT PAS », « RECOMMANDÉ », « NON RECOMMANDÉE », « PEUT » et « OPTIONNELLE » figurant dans ce document doivent être interprétés de la manière décrite dans le document RFC 2119.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119

1. Introduction1. Introduction

Afin de signaler l'insertion d’annonces ou d'événements de métadonnées personnalisés sur un lecteur de client, les diffuseurs utilisent souvent des métadonnées chronométrées incorporées dans la vidéo.In order to signal the insertion of advertisements or custom metadata events on a client player, broadcasters often make use of timed metadata embedded within the video. Pour permettre ces scénarios, Media Services prend en charge le transport de métadonnées chronométrées, du point de réception du canal de diffusion en continu en direct à l'application cliente.To enable these scenarios, Media Services provides support for the transport of timed metadata from the ingest point of the live streaming channel to the client application. Cette spécification présente plusieurs modes pris en charge par Media Services pour les métadonnées chronométrées à l’intérieur des signaux de diffusion en continu en direct.This specification outlines several modes that are supported by Media Services for timed metadata within live streaming signals.

  1. Signalement [SCTE-35] conforme aux normes indiquées par [SCTE-35], [SCTE-214-1], [SCTE-214-3] et [RFC8216][SCTE-35] signaling that complies with the standards outlined by [SCTE-35], [SCTE-214-1], [SCTE-214-3] and [RFC8216]

  2. Signalement [SCTE-35] conforme à la spécification héritée [Adobe-Primetime] pour la signalisation d’annuaire RTMP.[SCTE-35] signaling that complies with the legacy [Adobe-Primetime] specification for RTMP ad signaling.

  3. Un mode de signalisation de métadonnées générique chronométré, pour les messages qui ne sont PAS [SCTE-35] et qui peuvent comporter [ID3v2] ou d’autres schémas personnalisés définis par le développeur d’applications.A generic timed metadata signaling mode, for messages that are NOT [SCTE-35] and could carry [ID3v2] or other custom schemas defined by the application developer.

1.1 Termes utilisés1.1 Terms Used

TermeTerm DéfinitionDefinition
Interruption publicitaireAd Break Emplacement ou moment où une ou plusieurs annonces peuvent être planifiées pour la remise; identique à l’opportunité de disponibilité et de placement.A location or point in time where one or more ads may be scheduled for delivery; same as avail and placement opportunity.
Service de décision publicitaireAd Decision Service Service externe qui détermine la ou les annonces et les durées à afficher à l’utilisateur.external service that decides which ad(s) and durations will be shown to the user. Les services sont généralement fournis par un partenaire et ne relèvent pas de ce document.The services is typically provided by a partner and are out of scope for this document.
SignalCue Indication du temps et des paramètres de la prochaine pause publicitaire.Indication of time and parameters of the upcoming ad break. Notez que les signaux peuvent indiquer un basculement en attente vers une pause publicitaire, un basculement en attente vers la publicité suivante au sein d’une pause publicitaire et un basculement en attente d’une pause publicitaire vers le contenu principal.Note that cues can indicate a pending switch to an ad break, pending switch to the next ad within an ad break, and pending switch from an ad break to the main content.
PackagerPackager Le « point de terminaison de streaming » Azure Media Services fournit des fonctionnalités d’empaquetage dynamique pour DASH et TLS et est appelé « Packager » dans le secteur des médias.The Azure Media Services "Streaming Endpoint" provides dynamic packaging capabilities for DASH and HLS and is referred to as a "Packager" in the media industry.
Heure de présentationPresentation Time Heure à laquelle un événement est présenté à un utilisateur.The time that an event is presented to a viewer. Il s’agit de l’heure dans la chronologie du média à laquelle un utilisateur voit l’événement.The time represents the moment on the media timeline that a viewer would see the event. Par exemple, l’heure de présentation d’un message de commande splice_info() SCTE-35 est splice_time().For example, the presentation time of a SCTE-35 splice_info() command message is the splice_time().
Heure d’arrivéeArrival Time Heure à laquelle un message d’événement arrive.The time that an event message arrives. L’heure d’arrivée est généralement distincte de l’heure de présentation de l’événement, dans la mesure où les événements sont envoyés avant l’heure de leur présentation.The time is typically distinct from the presentation time of the event, since event messages are sent ahead of the presentation time of the event.
Piste partiellement allouéeSparse track Piste de média qui n’est pas continue et qui est synchronisée avec une piste parente ou de contrôle.media track that is not continuous, and is time synchronized with a parent or control track.
OrigineOrigin Service de diffusion en continu de média Azure.The Azure Media Streaming Service
Récepteur de canalChannel Sink Service de diffusion en continu en direct Azure.The Azure Media Live Streaming Service
HLSHLS Protocole de diffusion en continu HTTP AppleApple HTTP Live Streaming protocol
DASHDASH Diffusion en continu adaptative dynamique sur HTTP.Dynamic Adaptive Streaming Over HTTP
LisseSmooth Protocole de diffusion en continu lisse.Smooth Streaming Protocol
MPEG2-TSMPEG2-TS Flux de transport MPEG-2.MPEG 2 Transport Streams
RTMPRTMP Protocole multimédia en temps réel.Real-Time Multimedia Protocol
uimsbfuimsbf Entier non signé, avec le bit le plus significatif en tête.Unsigned integer, most significant bit first.

1.2 Références normatives1.2 Normative References

Les documents suivants contiennent des dispositions qui, par référence à ce texte, constituent des dispositions du présent document.The following documents contain provisions, which, through reference in this text, constitute provisions of this document. Tous les documents sont soumis à des révisions par les organismes de normalisation et les lecteurs sont encouragés à examiner la possibilité d’appliquer les éditions les plus récentes des documents répertoriés ci-dessous.All documents are subject to revision by the standards bodies, and readers are encouraged to investigate the possibility of applying the most recent editions of the documents listed below. Il est également rappelé aux lecteurs que les éditions plus récentes des documents référencés peuvent ne pas être compatibles avec cette version des spécifications de métadonnées chronométrées pour Azure Media Services.Readers are also reminded that newer editions of the referenced documents might not be compatible with this version of the timed metadata specification for Azure Media Services.

standardStandard DéfinitionDefinition
[Adobe-Primetime][Adobe-Primetime] Spécification de signalement d’insertion de programme numérique Primetime 1.2Primetime Digital Program Insertion Signaling Specification 1.2
[Adobe-Flash-AS][Adobe-Flash-AS] Informations de référence sur le langage Flash ActionScriptFLASH ActionScript Language Reference
[AMF0][AMF0] « Action Message Format AMF0 »"Action Message Format AMF0"
[DASH-IF-IOP][DASH-IF-IOP] Guide d’interopérabilité du Forum du secteur DASH v4.2 https://dashif-documents.azurewebsites.net/DASH-IF-IOP/master/DASH-IF-IOP.htmlDASH Industry Forum Interop Guidance v 4.2 https://dashif-documents.azurewebsites.net/DASH-IF-IOP/master/DASH-IF-IOP.html
[HLS-TMD][HLS-TMD] Métadonnées chronométrées pour HTTP Live Streaming - https://developer.apple.com/streamingTimed Metadata for HTTP Live Streaming - https://developer.apple.com/streaming
[CMAF-ID3][CMAF-ID3] Métadonnées chronométrées au format CMAF (Common Media Application Format)Timed Metadata in the Common Media Application Format (CMAF)
[ID3v2][ID3v2] Version de balise ID3 2.4.0 http://id3.org/id3v2.4.0-structureID3 Tag version 2.4.0 http://id3.org/id3v2.4.0-structure
[ISO-14496-12][ISO-14496-12] ISO/IEC 14496-12 : Partie 12: Format ISO de base pour les fichiers médias, quatrième édition 15/07/2012ISO/IEC 14496-12: Part 12 ISO base media file format, FourthEdition 2012-07-15
[MPEGDASH][MPEGDASH] Information technology – Dynamic adaptive streaming over HTTP (DASH) – Part 1: Media presentation description and segment formats.Information technology -- Dynamic adaptive streaming over HTTP (DASH) -- Part 1: Media presentation description and segment formats. Mai 2014.May 2014. Publié.Published. URL : https://www.iso.org/standard/65274.htmlURL: https://www.iso.org/standard/65274.html
[MPEGCMAF][MPEGCMAF] Information technology -- Multimedia application format (MPEG-A) -- Part 19 : Common media application format (CMAF) for segmented media.Information technology -- Multimedia application format (MPEG-A) -- Part 19: Common media application format (CMAF) for segmented media. Janvier 2018.January 2018. Publié.Published. URL : https://www.iso.org/standard/71975.htmlURL: https://www.iso.org/standard/71975.html
[MPEGCENC][MPEGCENC] [ISO/IEC 7] Technologies de l'information -- Technologies des systèmes MPEG -- Partie 7 : Cryptage commun des fichiers au format de fichier de médias de la base ISO.Information technology -- MPEG systems technologies -- Part 7: Common encryption in ISO base media file format files. Février 2016.February 2016. Publié.Published. URL : https://www.iso.org/standard/68042.htmlURL: https://www.iso.org/standard/68042.html
[MS-SSTR][MS-SSTR] « Microsoft Smooth Streaming Protocol », 15 mai 2014"Microsoft Smooth Streaming Protocol", May 15, 2014
[MS-SSTR-Ingest][MS-SSTR-Ingest] Spécification d’ingestion en direct au format MP4 fragmenté Azure Media ServicesAzure Media Services Fragmented MP4 Live Ingest Specification
[RFC8216][RFC8216] R.R. Pantos, Ed.; W. May.Pantos, Ed.; W. May. HTTP Live Streaming.HTTP Live Streaming. Août 2017.August 2017. Informatif.Informational. https://tools.ietf.org/html/rfc8216
[RFC4648][RFC4648] The Base16, Base32, and Base64 Data Encodings - https://tools.ietf.org/html/rfc4648The Base16, Base32, and Base64 Data Encodings - https://tools.ietf.org/html/rfc4648
[RTMP][RTMP] « Adobe’s Real-Time Messaging Protocol », 21 décembre 2012"Adobe's Real-Time Messaging Protocol", December 21, 2012
[SCTE-35-2019][SCTE-35-2019] SCTE 35 : 2019 - Digital Program Insertion Cueing Message for Cable - https://www.scte.org/SCTEDocs/Standards/ANSI_SCTE%2035%202019r1.pdfSCTE 35: 2019 - Digital Program Insertion Cueing Message for Cable - https://www.scte.org/SCTEDocs/Standards/ANSI_SCTE%2035%202019r1.pdf
[SCTE-214-1][SCTE-214-1] SCTE 214-1 2016 – MPEG DASH for IP-Based Cable Services Part 1: MPD Constraints and ExtensionsSCTE 214-1 2016 – MPEG DASH for IP-Based Cable Services Part 1: MPD Constraints and Extensions
[SCTE-214-3][SCTE-214-3] SCTE 214-3 2015 MPEG DASH for IP-Based Cable Services Part 3: DASH/FF ProfileSCTE 214-3 2015 MPEG DASH for IP-Based Cable Services Part 3: DASH/FF Profile
[SCTE-224][SCTE-224] SCTE 224 2018r1 – Event Scheduling and Notification InterfaceSCTE 224 2018r1 – Event Scheduling and Notification Interface
[SCTE-250][SCTE-250] Event and Signaling Management API (ESAM)Event and Signaling Management API (ESAM)

2. Réception de métadonnées chronométrées2. Timed Metadata Ingest

Azure Media Services prend en charge les métadonnées intrabande en temps réel pour les protocoles [RTMP] et Smooth Streaming [MS-SSTR-Ingest].Azure Media Services supports real-time in-band metadata for both [RTMP] and Smooth Streaming [MS-SSTR-Ingest] protocols. Les métadonnées en temps réel peuvent être utilisées pour définir des événements personnalisés, avec vos propres schémas personnalisés (JSON, binaires, XML), ainsi que des formats définis par le secteur comme ID3 ou SCTE-35 pour la signalisation des annonces dans un flux de diffusion.Real-time metadata can be used to define custom events, with your own unique custom schemas (JSON, Binary, XML), as well as industry defined formats like ID3, or SCTE-35 for ad signaling in a broadcast stream.

Cet article fournit des détails sur la façon d’envoyer des signaux de métadonnées chronométrées personnalisés à l’aide des protocoles de réception pris en charge d'Azure Media Services.This article provides the details for how to send custom timed metadata signals using the supported ingest protocols of Azure Media Services. Cet article explique également comment les manifestes pour TLS, DASH et Smooth Streaming sont agrémentés de signaux de métadonnées chronométrées et comment ils sont transportés en intrabande lorsque le contenu est remis à l’aide de CMAF (fragments MP4) ou de segments Transport Stream (TS) pour HLS.The article also explains how the manifests for HLS, DASH, and Smooth Streaming are decorated with the timed metadata signals, as well as how it is carried in-band when the content is delivered using CMAF (MP4 fragments) or Transport Stream (TS) segments for HLS.

Les scénarios de cas d’usage courants pour les métadonnées chronométrées sont les suivants :Common use case scenarios for timed metadata include:

  • Signaux publicitaires SCTE-35 pour déclencher des coupures publicitaires dans un événement en direct ou une diffusion linéaireSCTE-35 ad signals to trigger ad breaks in a live event or linear broadcast
  • Métadonnées ID3 personnalisées pouvant déclencher des événements dans une application cliente (navigateur, iOS ou Android)Custom ID3 metadata that can trigger events at a client application (browser, iOS, or Android)
  • Métadonnées JSON, binaires ou XML personnalisées définies pour déclencher des événements dans une application clienteCustom defined JSON, Binary, or XML metadata to trigger events at a client application
  • Télémétrie à partir d’un encodeur live, d’une caméra IP ou d’un droneTelemetry from a live encoder, IP Camera or Drone
  • Événements à partir d’une caméra IP comme la détection des mouvements, des visages, etc.Events from an IP Camera like Motion, face detection, etc.
  • Informations de position géographique à partir d’une caméra d’action, d’un drone ou d’un appareil mobileGeographic position information from an action camera, drone, or moving device
  • Paroles de chansonSong lyrics
  • Limites du programme sur un flux en temps réel linéaireProgram boundaries on a linear live feed
  • Images ou métadonnées augmentées à afficher sur un flux en temps réelImages or augmented metadata to be displayed on a live feed
  • Scores sportifs ou informations sur les jeux chronométrésSports scores or game-clock information
  • Packages de publicité interactive à afficher avec la vidéo dans le navigateurInteractive advertising packages to be displayed alongside the video in the browser
  • Questionnaires ou sondagesQuizzes or polls

Les événements en direct et le packager Azure Media Services sont capables de recevoir ces signaux de métadonnées chronométrées et de les convertir en flux de métadonnées pouvant atteindre des applications clientes à l’aide de protocoles basés sur des normes, tels que HLS et DASH.Azure Media Services Live Events and Packager are capable of receiving these timed metadata signals and converting them into a stream of metadata that can reach client applications using standards-based protocols like HLS and DASH.

2.1 Métadonnées chronométrées RTMP2.1 RTMP Timed Metadata

Le protocole [RTMP] permet d’envoyer des signaux de métadonnées chronométrées pour différents scénarios, y compris des métadonnées personnalisées et des signaux publicitaires SCTE-35.The [RTMP] protocol allows for timed metadata signals to be sent for various scenarios including custom metadata, and SCTE-35 ad signals.

Les signaux publicitaires (messages de signal) sont envoyés sous forme de messages de signal [AMF0] incorporés dans le flux [RTMP].Advertising signals (cue messages) are sent as [AMF0] cue messages embedded within the [RTMP] stream. Les messages de signal peuvent être envoyés avant que l’événement réel ou d’un signal de jointure publicitaire [SCTE35] doivent se produire.The cue messages may be sent sometime before the actual event or [SCTE35] ad splice signal needs to occur. Pour prendre en charge ce scénario, le timestamp réel de présentation de l’événement est envoyé dans le message de signal.To support this scenario, the actual presentation timestamp of the event is sent within the cue message. Pour plus d'informations, voir [AMF0].For more information, see [AMF0].

Les commandes [AMF0] suivantes sont prises en charge par Azure Media Services à des fins de réception RTMP :The following [AMF0] commands are supported by Azure Media Services for RTMP ingest:

  • onUserDataEvent : utilisée pour les métadonnées personnalisées ou les métadonnées chronométrées [ID3v2]onUserDataEvent - used for custom metadata or [ID3v2] timed metadata
  • onAdCue : utilisée principalement pour signaler une opportunité de placement publicitaire dans le stream en direct.onAdCue - used primarily for signaling an advertisement placement opportunity in the live stream. Deux formes de signal sont prises en charge, un mode simple et un mode « SCTE-35 ».Two forms of the cue are supported, a simple mode and a "SCTE-35" mode.
  • onCuePoint - pris en charge par certains encodeurs matériels locaux, tels que l’encodeur Elemental Live, pour signaler des messages [SCTE35].onCuePoint - supported by certain on-premises hardware encoders, like the Elemental Live encoder, to signal [SCTE35] messages.

Le tableau suivant décrit le format de la charge utile du message AMF que Media Services ingère pour les modes de message [SCTE35] et « simple ».The following table describes the format of the AMF message payload that Media Services will ingest for both "simple" and [SCTE35] message modes.

Le nom du message [AMF0] peut être utilisé pour différencier plusieurs flux d’événements du même type.The name of the [AMF0] message can be used to differentiate multiple event streams of the same type. Pour les messages [SCTE-35] et le mode « simple », le nom du message AMF DOIT être « onAdCue », comme requis dans la spécification [Adobe-Primetime].For both [SCTE-35] messages and "simple" mode, the name of the AMF message MUST be "onAdCue" as required in the [Adobe-Primetime] specification. Tous les champs non listés ci-dessous sont ignorés par Azure Media Services à la réception.Any fields not listed below SHALL be ignored by Azure Media Services at ingest.

2.1.1 RTMP avec métadonnées personnalisées utilisant « onUserDataEvent »2.1.1 RTMP with custom metadata using "onUserDataEvent"

Si vous souhaitez fournir des flux de métadonnées personnalisés à partir de votre encodeur en amont, caméra IP, drone ou appareil à l’aide du protocole RTMP, utilisez le type de commande de message de données « onUserDataEvent » [AMF0].If you want to provide custom metadata feeds from your upstream encoder, IP Camera, Drone, or device using the RTMP protocol, use the "onUserDataEvent" [AMF0] data message command type.

La commande de message de données « onUserDataEvent » DOIT contenir une charge utile de message avec la définition suivante pour être capturée par Media Services et empaquetée dans le format de fichier intrabande, ainsi que les manifestes pour HLS, Dash et Smooth Streaming.The "onUserDataEvent" data message command MUST carry a message payload with the following definition to be captured by Media Services and packaged into the in-band file format as well as the manifests for HLS, DASH and Smooth Streaming. Il est recommandé d’envoyer des messages de métadonnées chronométrées au plus une fois toutes les 0,5 seconde (500 ms) pour éviter que des problèmes de stabilité liés au stream en direct ne surviennent.It is recommended to send timed-metadata messages no more frequently than once every 0.5 seconds (500ms) or stability issues with the live stream may occur. Chaque message peut agréger des métadonnées à partir de plusieurs images si vous devez fournir des métadonnées au niveau de l'image.Each message could aggregate metadata from multiple frames if you need to provide frame-level metadata. Si vous envoyez des flux à débit binaire multiple, il est recommandé de fournir également les métadonnées sur un débit binaire unique pour réduire la bande passante et éviter les interférences avec le traitement vidéo/audio.If you are sending multi-bitrate streams, it is recommended that you also provide the metadata on a single bitrate only to reduce the bandwidth and avoid interference with video/audio processing.

La charge utile pour « onUserDataEvent » doit correspondre à un message au format XML EventStream [MPEGDASH].The payload for the "onUserDataEvent" should be an [MPEGDASH] EventStream XML format message. Cela facilite la transmission des schémas définis personnalisés qui peuvent être acheminés dans des charges utiles « emsg » pour le contenu CMAF [MPEGCMAF] fourni via les protocoles HLS ou DASH.This makes it easy to pass in custom defined schemas that can be carried in 'emsg' payloads in-band for CMAF [MPEGCMAF] content that is delivered over HLS or DASH protocols. Chaque message d'événement en direct DASH contient un élément schemeIdUri qui fonctionne comme un identificateur de schéma de message URN et définit la charge utile du message.Each DASH Event Stream message contains a schemeIdUri that functions as a URN message scheme identifier and defines the payload of the message. Certains schémas tels que « https://aomedia.org/emsg/ID3  » pour [ID3v2] ou urn: SCTE: scte35:2013: bin pour [SCTE-35] sont normalisés par les consortiums du secteur à des fins d'interopérabilité.Some schemes such as "https://aomedia.org/emsg/ID3" for [ID3v2], or urn:scte:scte35:2013:bin for [SCTE-35] are standardized by industry consortia for interoperability. Tout fournisseur d’applications peut définir son propre schéma personnalisé à l’aide d’une URL qu’il contrôle (domaine détenu) et fournir une spécification à cette URL, le cas échéant.Any application provider can define their own custom scheme using a URL that they control (owned domain) and may provide a specification at that URL if they choose. Si un lecteur possède un descripteur pour le schéma défini, il s’agit du seul composant qui doit comprendre la charge utile et le protocole.If a player has a handler for the defined scheme, then that is the only component that needs to understand the payload and protocol.

Le schéma correspondant à la charge utile XML EventStream [MPEG-DASH] est défini comme (extrait d'ISO-IEC-23009-1 DASH 3e édition).The schema for the [MPEG-DASH] EventStream XML payload is defined as (excerpt from DASH ISO-IEC-23009-1-3rd Edition). Notez qu’un seul « EventType » par « EventStream » est pris en charge pour l’instant.Note that only one "EventType" per "EventStream" is supported at this time. Seul le premier élément Événement est traité si plusieurs événements sont fournis dans EventStream.Only the first Event element will be processed if multiple events are provided in the EventStream.

  <!-- Event Stream -->
  <xs:complexType name="EventStreamType">
    <xs:sequence>
      <xs:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute ref="xlink:href"/>
    <xs:attribute ref="xlink:actuate" default="onRequest"/>
    <xs:attribute name="schemeIdUri" type="xs:anyURI" use="required"/>
    <xs:attribute name="value" type="xs:string"/>
    <xs:attribute name="timescale" type="xs:unsignedInt"/>
  </xs:complexType>
  <!-- Event  -->
  <xs:complexType name="EventType">
    <xs:sequence>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="presentationTime" type="xs:unsignedLong" default="0"/>
    <xs:attribute name="duration" type="xs:unsignedLong"/>
    <xs:attribute name="id" type="xs:unsignedInt"/>
    <xs:attribute name="contentEncoding" type="ContentEncodingType"/>
    <xs:attribute name="messageData" type="xs:string"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

Exemple de flux d’événements XML avec ID de schéma ID3 et charge utile de données encodées en base64Example XML Event Stream with ID3 schema ID and base64-encoded data payload.

   <?xml version="1.0" encoding="UTF-8"?>
   <EventStream schemeIdUri="https://aomedia.org/emsg/ID3">
         <Event contentEncoding="Base64">
          -- base64 encoded ID3v2 full payload here per [CMAF-TMD] --
         </Event>
   <EventStream>

Exemple de flux d’événements avec ID de schéma personnalisé et données binaires encodées en base64Example Event Stream with custom schema ID and base64-encoded binary data

   <?xml version="1.0" encoding="UTF-8"?>
   <EventStream schemeIdUri="urn:example.org:custom:binary">
         <Event contentEncoding="Base64">
          -- base64 encoded custom binary data message --
         </Event>
   <EventStream>

Exemple de flux d’événements avec ID de schéma personnalisé et JSON personnaliséExample Event Stream with custom schema ID and custom JSON

   <?xml version="1.0" encoding="UTF-8"?>
   <EventStream schemeIdUri="urn:example.org:custom:JSON">
         <Event>
          [
            {"key1" : "value1"},
            {"key2" : "value2"}
          ]
         </Event>
   <EventStream>

URI d’ID de schéma pris en charge intégrésBuilt-in supported Scheme ID URIs

URI d’ID de schémaScheme ID URI DescriptionDescription
https://aomedia.org/emsg/ID3https://aomedia.org/emsg/ID3 Décrit la façon dont les métadonnées [ID3v2] peuvent être transmises en tant que métadonnées chronométrées dans un MP4 fragmenté [MPEGCMAF] compatible CMAF.Describes how [ID3v2] metadata can be carried as timed metadata in a CMAF-compatible [MPEGCMAF] fragmented MP4. Pour plus d'informations, consultez Métadonnées chronométrées au format CMAF (Common Media Application Format)For more information see the Timed Metadata in the Common Media Application Format (CMAF)

Traitement des événements et signalisation des manifestesEvent processing and manifest signaling

À réception d’un événement « onUserDataEvent » valide, Azure Media Services recherche une charge utile XML valide qui correspond à EventStreamType (défini dans [MPEGDASH]), analyse la charge utile XML et la convertit en zone « emsg » version 1 de fragment MP4 [MPEGCMAF] à des fins de stockage dans l'archive en temps réel et de transmission au packager Media Services.On receipt of a valid "onUserDataEvent" event, Azure Media Services will look for a valid XML payload that matches the EventStreamType (defined in [MPEGDASH] ), parse the XML payload and convert it into an [MPEGCMAF] MP4 fragment 'emsg' version 1 box for storage in the live archive and transmission to the Media Services Packager. Le packager détecte la zone « emsg » dans le stream en direct et :The Packager will detect the 'emsg' box in the live stream and:

  • (a) l'empaquète dynamiquement dans des segments TS à des fins de remise aux clients HLS en conformité avec la spécification de métadonnées chronométrées HLS [HLS-TMD], ou(a) "dynamically package" it into TS segments for delivery to HLS clients in compliance with the HLS timed metadata specification [HLS-TMD], or
  • (b) la transmet pour une remise en fragments CMAF via HLS ou DASH, ou(b) pass it through for delivery in CMAF fragments via HLS or DASH, or
  • (c) la convertit en signal de piste partiellement allouée pour une remise via Smooth Streaming [MS-SSTR].(c) convert it into a sparse track signal for delivery via Smooth Streaming [MS-SSTR].

En plus des paquets CMAF ou TS PES au format « emsg » pour HLS, les manifestes pour DASH (MPD) et Smooth Streaming contiennent une référence aux flux d’événements intrabande (également appelée piste partiellement allouée dans Smooth Streaming).In addition to the in-band 'emsg' format CMAF or TS PES packets for HLS, the manifests for DASH (MPD), and Smooth Streaming will contain a reference to the in-band event streams (also known as sparse stream track in Smooth Streaming).

Les événements individuels ou leurs charges utiles de données ne sont PAS directement générés dans les manifestes HLS, DASH ou Smooth.Individual events or their data payloads are NOT output directly in the HLS, DASH, or Smooth manifests.

Contraintes et valeurs par défaut d’informations supplémentaires pour les événements onUserDataEventAdditional informational constraints and defaults for onUserDataEvent events

  • Si l’échelle de temps n’est pas définie dans l’élément EventStream, l’échelle de temps RTMP 1 kHz est utilisée par défautIf the timescale is not set in the EventStream element, the RTMP 1 kHz timescale is used by default
  • La remise d’un message onUserDataEvent est limitée à une fois toutes les 500 ms max. Si vous envoyez des événements de manière plus fréquente, cela peut avoir un impact sur la bande passante et la stabilité du flux en temps réelDelivery of an onUserDataEvent message is limited to once every 500ms max. If you send events more frequently, it can impact the bandwidth and the stability of the live feed

2.1.2 Signalisation de signal publicitaire RTMP avec « onAdCue »2.1.2 RTMP ad cue signaling with "onAdCue"

Azure Media Services peut écouter et répondre à plusieurs types de messages [AMF0] utilisables pour signaler différentes métadonnées synchronisées en temps réel dans le flux en direct.Azure Media Services can listen and respond to several [AMF0] message types which can be used to signal various real time synchronized metadata in the live stream. La spécification [Adobe-Primetime] définit deux types de signal appelés modes « simple » et « SCTE-35 ».The [Adobe-Primetime] specification defines two cue types called "simple" and "SCTE-35" mode. Pour le mode « simple », Media Services prend en charge un seul message de signal AMF appelé « onAdCue » à l’aide d’une charge utile qui correspond à la table ci-dessous définie pour le signal « mode simple ».For "simple" mode, Media Services supports a single AMF cue message called "onAdCue" using a payload that matches the table below defined for the "Simple Mode" signal.

La section suivante présente la charge utile du « mode simple » RTMP, utilisable pour signaler un signal publicitaire « spliceOut » de base qui sera transmis au manifeste du client pour TLS, DASH et Microsoft Smooth Streaming.The following section shows RTMP "simple" mode" payload, which can be used to signal a basic "spliceOut" ad signal that will be carried through to the client manifest for HLS, DASH, and Microsoft Smooth Streaming. Cela s’avère très utile dans les scénarios où le client ne dispose pas d’un système complexe d’insertion ou de déploiement de signalement d’annonces basées sur SCTE-35, et où il utilise un encodeur local de base pour envoyer le message de signal via une API.This is very useful for scenarios where the customer does not have a complex SCTE-35 based ad signaling deployment or insertion system, and is using a basic on-premises encoder to send in the cue message via an API. En règle générale, l’encodeur local prend en charge une API REST pour déclencher ce signal, ce qui permet également « d’épisser » le flux vidéo en insérant une image IDR dans la vidéo et en démarrant un nouveau groupe d’images.Typically the on-premises encoder will support a REST-based API to trigger this signal, which will also "splice-condition" the video stream by inserting an IDR frame into the video, and starting a new GOP.

2.1.3 Signalisation de signal publicitaire RTMP avec « onAdCue » - Mode simple2.1.3 RTMP ad cue signaling with "onAdCue" - Simple Mode

Nom du champField Name Type de champField Type Requis ?Required? DescriptionsDescriptions
typetype StringString ObligatoireRequired Message d'événement.The event message. Doit être « SpliceOut » pour désigner une jointure en mode simple.Shall be "SpliceOut" to designate a simple mode splice.
idid StringString ObligatoireRequired Identificateur unique décrivant la jointure ou le segment.A unique identifier describing the splice or segment. Identifie cette instance du message.Identifies this instance of the message
durationduration NumberNumber ObligatoireRequired Durée de la jointure.The duration of the splice. Les unités sont des fractions de seconde.Units are fractional seconds.
elapsedelapsed NumberNumber FacultatifOptional Lorsque le signal est répété pour prendre en charge le réglage, ce champ est la quantité de temps de présentation qui s’est écoulée depuis le début de la jointure.When the signal is being repeated in order to support tune in, this field shall be the amount of presentation time that has elapsed since the splice began. Les unités sont des fractions de seconde.Units are fractional seconds. Lorsque vous utilisez le mode simple, cette valeur ne doit pas dépasser la durée originale de la jointure.When using simple mode, this value should not exceed the original duration of the splice.
timetime NumberNumber ObligatoireRequired Doit être l’heure de la jointure, dans le temps de présentation.Shall be the time of the splice, in presentation time. Les unités sont des fractions de seconde.Units are fractional seconds.

Exemple de sortie de manifeste MPEG DASH lors de l’utilisation du mode simple Adobe RTMPExample MPEG DASH manifest output when using Adobe RTMP simple mode

Consultez l’exemple 3.3.2.1 MPEG DASH .mpd EventStream utilisant le mode simple AdobeSee example 3.3.2.1 MPEG DASH .mpd EventStream using Adobe simple mode

Consultez l’exemple 3.3.3.1 manifeste DASH avec une période unique et le mode simple Adobe See example 3.3.3.1 DASH manifest with single period and Adobe simple mode

Exemple de sortie de manifeste HLS lors de l’utilisation du mode simple Adobe RTMPExample HLS manifest output when using Adobe RTMP simple mode

Consultez l’exemple 3.2.2 manifeste HLS utilisant le mode simple Adobe et la balise EXT-X-CUESee example 3.2.2 HLS manifest using Adobe simple mode and EXT-X-CUE tag

2.1.4 Signalisation de signal publicitaire RTMP avec « onAdCue » - Mode SCTE-352.1.4 RTMP ad cue signaling with "onAdCue" - SCTE-35 Mode

Lorsque vous travaillez avec un flux de travail de production de diffusion plus avancé qui requiert la transmission du message de charge utile SCTE-35 complet au manifeste TLS ou DASH, il est préférable d’utiliser le « mode SCTE-35 » de la spécification [Adobe-Primetime].When you are working with a more advanced broadcast production workflow that requires the full SCTE-35 payload message to be carried through to the HLS or DASH manifest, it is best to use the "SCTE-35 Mode" of the [Adobe-Primetime] specification. Ce mode prend en charge les signaux SCTE-35 intrabande envoyés directement dans un encodeur live local, qui encode ensuite les signaux dans le flux RTMP à l’aide du « mode SCTE-35 » indiqué dans la spécification [Adobe-Primetime].This mode supports in-band SCTE-35 signals being sent directly into an on-premises live encoder, which then encodes the signals out into the RTMP stream using the "SCTE-35 Mode" specified in the [Adobe-Primetime] specification.

En général, les messages SCTE-35 peuvent apparaître uniquement dans des entrées de flux de transport MPEG-2 (TS) sur un encodeur local.Typically SCTE-35 messages can appear only in MPEG-2 transport stream (TS) inputs on an on-premises encoder. Contactez le fabricant de votre encodeur pour plus d’informations sur la configuration d’une réception de flux de transport contenant SCTE-35 et son activation pour le transfert vers RTMP en mode Adobe SCTE-35.Check with your encoder manufacturer for details on how to configure a transport stream ingest that contains SCTE-35 and enable it for pass-through to RTMP in Adobe SCTE-35 mode.

Dans ce scénario, la charge utile suivante DOIT être envoyée à partir de l’encodeur local à l’aide du type de message « onAdCue » [AMF0].In this scenario, the following payload MUST be sent from the on-premises encoder using the "onAdCue" [AMF0] message type.

Nom du champField Name Type de champField Type Requis ?Required? DescriptionsDescriptions
cuecue StringString ObligatoireRequired Message d'événement.The event message. Pour les messages [SCTE-35], il DOIT s’agir de [RFC4648] binary splice_info_section() codé en Base64 de façon à ce que les messages soient envoyés aux clients HLS, Smooth Streaming et Dash.For [SCTE-35] messages, this MUST be the base64-encoded [RFC4648] binary splice_info_section() in order for messages to be sent to HLS, Smooth, and Dash clients.
typetype StringString ObligatoireRequired URN ou URL identifiant le schéma du message.A URN or URL identifying the message scheme. Pour les messages [SCTE-35], cela DOIT être « scte35 » de façon à ce que les messages soient envoyés aux clients HLS, Smooth Streaming et Dash conformément à la norme [Adobe-Primetime].For [SCTE-35] messages, this SHOULD be "scte35" in order for messages to be sent to HLS, Smooth, and Dash clients, in compliance with [Adobe-Primetime]. Éventuellement, l’URN « urn: SCTE:scte35:2013:bin » peut également être utilisée pour signaler un message [SCTE-35].Optionally, the URN "urn:scte:scte35:2013:bin" may also be used to signal a [SCTE-35] message.
idid StringString ObligatoireRequired Identificateur unique décrivant la jointure ou le segment.A unique identifier describing the splice or segment. Identifie cette instance du message.Identifies this instance of the message. Les messages dont la sémantique est identique auront la même valeur.Messages with equivalent semantics shall have the same value.
durationduration NumberNumber ObligatoireRequired Durée de l’événement ou du segment de jointure publicitaire, si elle est connue.The duration of the event or ad splice-segment, if known. Si elle est inconnue, la valeur DOIT être 0.If unknown, the value SHOULD be 0.
elapsedelapsed NumberNumber FacultatifOptional Lorsque le signal publicitaire [SCTE-35] est répété pour le réglage, ce champ est la quantité de temps de présentation qui s’est écoulée depuis le début de la jointure.When the [SCTE-35] ad signal is being repeated in order to tune in, this field shall be the amount of presentation time that has elapsed since the splice began. Les unités sont des fractions de seconde.Units are fractional seconds. En mode de [SCTE-35], cette valeur peut dépasser la durée originale spécifiée de la jointure ou du segment.In [SCTE-35] mode, this value may exceed the original specified duration of the splice or segment.
timetime NumberNumber ObligatoireRequired Heure de présentation de l’événement ou de la jointure publicitaire.The presentation time of the event or ad splice. L’heure et la durée de présentation DOIVENT être en phase avec les points d’accès du flux (SAP) de type 1 ou 2, comme défini dans la norme [ISO-14496-12] Annexe I. Pour les sorties HLS, l’heure et la durée DOIVENT correspondre aux limites de segment.The presentation time and duration SHOULD align with Stream Access Points (SAP) of type 1 or 2, as defined in [ISO-14496-12] Annex I. For HLS egress, time and duration SHOULD align with segment boundaries. L’heure et la durée de présentation de messages d’événements différents au sein du même flux d’événements NE DOIVENT PAS se chevaucher.The presentation time and duration of different event messages within the same event stream MUST not overlap. Les unités sont des fractions de seconde.Units are fractional seconds.

Exemple de manifeste MPEG DASH .mpd avec le mode SCTE-35Example MPEG DASH .mpd manifest with SCTE-35 mode

Consultez Section 3.3.3.2 exemple de manifeste DASH avec SCTE-35See Section 3.3.3.2 example DASH manifest with SCTE-35

Exemple de manifeste HLS .m3u8 avec signal en mode SCTE-35Example HLS manifest .m3u8 with SCTE-35 mode signal

Consultez Section 3.2.1.1 exemple de manifeste HLS avec SCTE-35See Section 3.2.1.1 example HLS manifest with SCTE-35

2.1.5 Signalisation de signal publicitaire RTMP avec « onCuePoint » pour Elemental Live2.1.5 RTMP Ad signaling with "onCuePoint" for Elemental Live

L’encodeur local Elemental Live prend en charge les marqueurs publicitaires dans le signal RTMP.The Elemental Live on-premises encoder supports ad markers in the RTMP signal. Azure Media Services prend actuellement en charge uniquement le type de marqueur publicitaire « onCuePoint » pour RTMP.Azure Media Services currently only supports the "onCuePoint" Ad Marker type for RTMP. Vous pouvez activer cette option dans les paramètres de groupe Adobe RTMP au sein des paramètres ou de l’API de l’encodeur live Elemental Media en définissant « ad_markers » sur « onCuePoint ».This can be enabled in the Adobe RTMP Group Settings in the Elemental Media Live encoder settings or API by setting the "ad_markers" to "onCuePoint". Pour plus de détails, veuillez vous référer à la documentation d’Elemental Live.Please refer to the Elemental Live documentation for details. L’activation de cette fonctionnalité dans le groupe RTMP transmettra les signaux SCTE-35 aux sorties Adobe RTMP à traiter par Azure Media Services.Enabling this feature in the RTMP Group will pass SCTE-35 signals to the Adobe RTMP outputs to be processed by Azure Media Services.

Le type de message « onCuePoint » est défini dans [Adobe-Flash-AS] et possède la structure de charge utile suivante une fois envoyé à partir de la sortie RTMP Elemental Live.The "onCuePoint" message type is defined in [Adobe-Flash-AS] and has the following payload structure when sent from the Elemental Live RTMP output.

PropriétéProperty DescriptionDescription
namename Le nom DOIT être «scte35» par Elemental Live.The name SHOULD be 'scte35' by Elemental Live.
timetime La durée en secondes au cours de laquelle le point de repère s’est produit dans le fichier vidéo pendant la chronologieThe time in seconds at which the cue point occurred in the video file during timeline
typetype Le type de point de repère DOIT être défini sur« event ».The type of cue point SHOULD be set to "event".
parametersparameters Un tableau associatif de chaînes de paires nom/valeur contenant les informations du message SCTE-35, y compris l’ID et la durée.An associative array of name/value pair strings containing the information from the SCTE-35 message, including Id and duration. Ces valeurs sont analysées par Azure Media Services et incluses dans la balise de décoration du manifeste.These values are parsed out by Azure Media Services and included in the manifest decoration tag.

Quand ce mode de marqueur publicitaire est utilisé, la sortie du manifeste TLS est similaire au mode « simple » d’Adobe.When this mode of ad marker is used, the HLS manifest output is similar to Adobe "Simple" mode.

Exemple de MPEG DASH MPD, monophasé, signaux en mode simple AdobeExample MPEG DASH MPD, single period, Adobe Simple mode signals

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" publishTime="2020-01-07T18:58:03Z" minimumUpdatePeriod="PT0S" timeShiftBufferDepth="PT58M56S" availabilityStartTime="2020-01-07T17:44:47Z" minBufferTime="PT7S">
    <Period start="PT0S">
        <EventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="scte35" timescale="10000000">
            <Event presentationTime="1583497601000000" duration="300000000" id="1085900"/>
            <Event presentationTime="1583500901666666" duration="300000000" id="1415966"/>
            <Event presentationTime="1583504202333333" duration="300000000" id="1746033"/>
            <Event presentationTime="1583507502666666" duration="300000000" id="2076066"/>
            <Event presentationTime="1583510803333333" duration="300000000" id="2406133"/>
            <Event presentationTime="1583514104000000" duration="300000000" id="2736200"/>
            <Event presentationTime="1583517404666666" duration="300000000" id="3066266"/>
            <Event presentationTime="1583520705333333" duration="300000000" id="3396333"/>
            <Event presentationTime="1583524006000000" duration="300000000" id="3726400"/>
            <Event presentationTime="1583527306666666" duration="300000000" id="4056466"/>
            <Event presentationTime="1583530607333333" duration="300000000" id="4386533"/>
        </EventStream>
        <AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.4D400C" maxWidth="256" maxHeight="144" startWithSAP="1">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="scte35"/>
            <SegmentTemplate timescale="10000000" presentationTimeOffset="1583486678426666" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="1583495318000000" d="64000000" r="34"/>
                    <S d="43000000"/>
                    <S d="21000000"/>
                    <!-- ... Truncated for brevity of sample-->

                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="1583495318000000" type="0" wallClockTime="2020-01-07T17:59:10.957Z" presentationTime="1583495318000000"/>
            <Representation id="1_V_video_3750956353252827751" bandwidth="149952" width="256" height="144"/>
        </AdaptationSet>
        <AdaptationSet id="2" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.2" lang="en">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="scte35"/>
            <Label>ambient</Label>
            <SegmentTemplate timescale="10000000" presentationTimeOffset="1583486678426666" media="QualityLevels($Bandwidth$)/Fragments(ambient=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(ambient=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="1583495254426666" d="64000000" r="35"/>
                    <S d="43093334"/>
                    <S d="20906666"/>
                    <!-- ... Truncated for brevity of sample-->

                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="1583495254426666" type="0" wallClockTime="2020-01-07T17:59:04.600Z" presentationTime="1583495254426666"/>
            <Representation id="5_A_ambient_9125670592623055209" bandwidth="96000" audioSamplingRate="48000"/>
        </AdaptationSet>
    </Period>
</MPD>

Exemple de sélection HLS, signaux en mode simple Adobe utilisant la balise EXT-X-CUE (tronquée « ... » par souci de concision)Example HLS playlist, Adobe Simple mode signals using EXT-X-CUE tag (truncated "..." for brevity)

L’exemple suivant illustre la sortie du packager dynamique Media Services pour un flux de réception RTMP utilisant les signaux en mode « simple » Adobe et la balise héritée [Adobe-Primetime] EXT-X-CUE.The following example shows the output from the Media Services dynamic packager for an RTMP ingest stream using Adobe "simple" mode signals and the legacy [Adobe-Primetime] EXT-X-CUE tag.

#EXTM3U
#EXT-X-VERSION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:7
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-PROGRAM-DATE-TIME:2020-01-07T17:44:47Z
#EXTINF:6.400000,no-desc
Fragments(video=1583486742000000,format=m3u8-aapl-v8)
#EXTINF:6.400000,no-desc
Fragments(video=1583486806000000,format=m3u8-aapl-v8)
...
#EXTINF:6.166667,no-desc
Fragments(video=1583487638000000,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667
#EXTINF:0.233333,no-desc
Fragments(video=1583487699666666,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667,ELAPSED=0.233333
#EXTINF:6.400000,no-desc
Fragments(video=1583487702000000,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667,ELAPSED=6.633333
#EXTINF:6.400000,no-desc
Fragments(video=1583487766000000,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667,ELAPSED=13.033333
#EXTINF:6.400000,no-desc
Fragments(video=1583487830000000,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667,ELAPSED=19.433333
#EXTINF:6.400000,no-desc
Fragments(video=1583487894000000,format=m3u8-aapl-v8)
#EXT-X-CUE:ID=95766,TYPE="SpliceOut",DURATION=30.000000,TIME=158348769.966667,ELAPSED=25.833333
#EXTINF:4.166667,no-desc
Fragments(video=1583487958000000,format=m3u8-aapl-v8)
#EXTINF:2.233333,no-desc
Fragments(video=1583487999666666,format=m3u8-aapl-v8)
#EXTINF:6.400000,no-desc
Fragments(video=1583488022000000,format=m3u8-aapl-v8)
...

2.1.6 Annulation et mises à jour2.1.6 Cancellation and Updates

Des messages peuvent être annulés ou mis à jour par l’envoi de plusieurs messages avec les mêmes heure et ID de présentation.Messages can be canceled or updated by sending multiple messages with the same presentation time and ID. L’heure et l’ID de présentation identifient de façon unique l’événement, et le dernier message reçu pour une heure de présentation spécifique qui correspond aux contraintes de décompte est le message traité.The presentation time and ID uniquely identify the event, and the last message received for a specific presentation time that meets pre-roll constraints is the message that is acted upon. L’événement mis à jour remplace tout message reçu précédemment.The updated event replaces any previously received messages. La contrainte de décompte est de quatre secondes.The pre-roll constraint is four seconds. Les messages reçus au moins quatre secondes avant l’heure de présentation seront traités.Messages received at least four seconds prior to the presentation time will be acted upon.

2.2 Réception de MP4 fragmentée (diffusion en continu lisse)2.2 Fragmented MP4 Ingest (Smooth Streaming)

Pour les exigences relatives à la réception de flux en direct, voir [MS-SSTR-Ingest].Refer to [MS-SSTR-Ingest] for requirements on live stream ingest. Les sections suivantes fournissent des détails sur la réception de métadonnées de présentation chronométrées.The following sections provide details regarding ingest of timed presentation metadata. Les métadonnées de présentation chronométrées sont reçues en tant que piste partiellement allouée, telle que définie dans la zone de manifeste du serveur en direct (voir MS-SSTR) et la zone de vidéo (« moov »).Timed presentation metadata is ingested as a sparse track, which is defined in both the Live Server Manifest Box (see MS-SSTR) and the Movie Box ('moov').

Chaque fragment se compose d’une zone de fragment vidéo (« moof ») et d’une zone de données multimédias (« mdat »), où la zone « mdat » est le message binaire.Each sparse fragment consists of a Movie Fragment Box ('moof') and Media Data Box ('mdat'), where the 'mdat' box is the binary message.

Pour permettre l’insertion précise de publicités, l’encodeur DOIT diviser le fragment à l’heure de la présentation, où l’insertion du signal est requise.In order to achieve frame-accurate insertion of ads, the encoder MUST split the fragment at the presentation time where the cue is required to be inserted. Un nouveau fragment DOIT être créé, commençant par une nouvelle image IDR ou des points d’accès de flux (SAP) de type 1 ou 2, comme défini dans l’Annexe I de la norme [ISO-14496-12]. Cela permet à Azure Media Packager de générer correctement un manifeste HLS et un manifeste à plusieurs périodes DASH lorsque la nouvelle période commence au moment précis de la jointure.A new fragment MUST be created that begins with a newly created IDR frame, or Stream Access Points (SAP) of type 1 or 2, as defined in [ISO-14496-12] Annex I. This allows the Azure Media Packager to properly generate an HLS manifest and a DASH multi-period manifest where the new Period begins at the frame-accurate splice conditioned presentation time.

2.2.1 Zone de manifeste du serveur en direct2.2.1 Live Server Manifest Box

La piste partiellement allouée DOIT être déclarée dans la zone de manifeste du serveur en direct avec une entrée <textstream> , et DOIT avoir l’ensemble d’attributs suivants :The sparse track MUST be declared in the Live Server Manifest box with a <textstream> entry and it MUST have the following attributes set:

Nom de l’attributAttribute Name Type de champField Type Obligatoire ?Required? DescriptionDescription
systemBitratesystemBitrate NumberNumber ObligatoireRequired DOIT être « 0 », indiquant une piste avec un débit binaire variable inconnu.MUST be "0", indicating a track with unknown, variable bitrate.
parentTrackNameparentTrackName StringString ObligatoireRequired DOIT être le nom de la piste parent sur laquelle les codes temporels de la piste partiellement allouée sont alignés à l’échelle de temps.MUST be the name of the parent track, to which the sparse track time codes are timescale aligned. La piste parent ne peut pas être une piste partiellement allouée.The parent track cannot be a sparse track.
manifestOutputmanifestOutput BooleanBoolean ObligatoireRequired DOIT être « true » pour indiquer que la piste partiellement allouée sera incorporée dans le manifeste du client lisse.MUST be "true", to indicate that the sparse track will be embedded in the Smooth client manifest.
SubtypeSubtype StringString ObligatoireRequired DOIT être le code « DATA » de quatre caractères.MUST be the four character code "DATA".
SchémaScheme StringString ObligatoireRequired DOIT être un URN ou une URL identifiant le schéma de message.MUST be a URN or URL identifying the message scheme. Pour les messages [SCTE-35], il DOIT s’agir de « urn : scte:scte35:2013:bin » de façon à ce que les messages soient envoyés aux clients HLS, Smooth Streaming et Dash conformément à la norme [SCTE-35].For [SCTE-35] messages, this MUST be "urn:scte:scte35:2013:bin" in order for messages to be sent to HLS, Smooth, and Dash clients in compliance with [SCTE-35].
trackNametrackName StringString ObligatoireRequired DOIT être le nom de la piste partiellement allouée. Le trackName peut servir à différencier plusieurs flux d’événements dont le schéma est identique.MUST be the name of the sparse track. The trackName can be used to differentiate multiple event streams with the same scheme. Chaque flux d’événements DOIT avoir un nom de piste unique.Each unique event stream MUST have a unique track name.
timescaletimescale NumberNumber FacultatifOptional DOIT être l’échelle de temps de la piste parent.MUST be the timescale of the parent track.

2.2.2 Zone de vidéo2.2.2 Movie Box

La zone de vidéo (« moov ») suit la zone de manifeste du serveur en direct en tant que partie de l’en-tête de flux pour une piste partiellement allouée.The Movie Box ('moov') follows the Live Server Manifest Box as part of the stream header for a sparse track.

La zone « moov » DOIT contenir une zone TrackHeaderBox (« tkhd ») , telle que définie dans la norme [ISO-14496-12] avec les contraintes suivantes :The 'moov' box SHOULD contain a TrackHeaderBox ('tkhd') box as defined in [ISO-14496-12] with the following constraints:

Nom du champField Name Type de champField Type Obligatoire ?Required? DescriptionDescription
durationduration Entier non signé 64 bits64-bit unsigned integer ObligatoireRequired DOIT être 0, étant donné que la zone de piste contient zéro exemple et que la durée totale des exemples dans la zone de piste est 0.SHOULD be 0, since the track box has zero samples and the total duration of the samples in the track box is 0.

La zone « moov » DOIT contenir un HandlerBox (« hdlr ») , tel que défini dans la norme [ISO-14496-12] avec les contraintes suivantes :The 'moov' box SHOULD contain a HandlerBox ('hdlr') as defined in [ISO-14496-12] with the following constraints:

Nom du champField Name Type de champField Type Obligatoire ?Required? DescriptionDescription
handler_typehandler_type Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired DOIT être « meta ».SHOULD be 'meta'.

La zone « stsd » DOIT contenir une zone de MetaDataSampleEntry avec un nom de codage tel que défini dans la norme [ISO-14496-12].The 'stsd' box SHOULD contain a MetaDataSampleEntry box with a coding name as defined in [ISO-14496-12]. Par exemple, pour les messages SCTE-35, le nom de codage DOIT être « scte ».For example, for SCTE-35 messages the coding name SHOULD be 'scte'.

2.2.3 Zone de fragment vidéo et zone de données multimédias2.2.3 Movie Fragment Box and Media Data Box

Les fragments de piste partiellement allouée se composent d’une zone de fragment vidéo (« moof ») et d’une zone de données multimédias (« mdat »).Sparse track fragments consist of a Movie Fragment Box ('moof') and a Media Data Box ('mdat').

Notes

Pour permettre l’insertion précise de publicités, l’encodeur DOIT diviser le fragment à l’heure de la présentation, où l’insertion du signal est requise.In order to achieve frame-accurate insertion of ads, the encoder MUST split the fragment at the presentation time where the cue is required to be inserted. Un nouveau fragment DOIT être créé, commençant par une nouvelle image IDR ou des points d’accès de flux (SAP) de type 1 ou 2, comme défini dans l’Annexe I de la norme [ISO-14496-12]A new fragment MUST be created that begins with a newly created IDR frame, or Stream Access Points (SAP) of type 1 or 2, as defined in [ISO-14496-12] Annex I

La zone MovieFragmentBox (« moof ») DOIT contenir une zone TrackFragmentExtendedHeaderBox (« uuid ») telle que définie dans [MS-SSTR] avec les champs suivants :The MovieFragmentBox ('moof') box MUST contain a TrackFragmentExtendedHeaderBox ('uuid') box as defined in [MS-SSTR] with the following fields:

Nom du champField Name Type de champField Type Obligatoire ?Required? DescriptionDescription
fragment_absolute_timefragment_absolute_time Entier non signé 64 bits64-bit unsigned integer ObligatoireRequired DOIT être l’heure d’arrivée de l’événement.MUST be the arrival time of the event. Cette valeur aligne le message sur la piste parent.This value aligns the message with the parent track.
fragment_durationfragment_duration Entier non signé 64 bits64-bit unsigned integer ObligatoireRequired DOIT être la durée de l’événement.MUST be the duration of the event. La durée peut être zéro pour indiquer que la durée est inconnue.The duration can be zero to indicate that the duration is unknown.

La zone de MediaDataBox (« mdat ») DOIT avoir le format suivant :The MediaDataBox ('mdat') box MUST have the following format:

Nom du champField Name Type de champField Type Obligatoire ?Required? DescriptionDescription
versionversion Entier non signé 32 bits (uimsbf)32-bit unsigned integer (uimsbf) ObligatoireRequired Détermine le format du contenu de la zone « mdat ».Determines the format of the contents of the 'mdat' box. Les versions non reconnues seront ignorées.Unrecognized versions will be ignored. Actuellement, la seule version prise en charge est 1.Currently the only supported version is 1.
idid Entier non signé 32 bits (uimsbf)32-bit unsigned integer (uimsbf) ObligatoireRequired Identifie cette instance du message.Identifies this instance of the message. Des messages dont la sémantique est identique ont la même valeur ; le traitement de toute zone de message d’événement ayant le même ID est suffisant.Messages with equivalent semantics shall have the same value; that is, processing any one event message box with the same id is sufficient.
presentation_time_deltapresentation_time_delta Entier non signé 32 bits (uimsbf)32-bit unsigned integer (uimsbf) ObligatoireRequired La somme de fragment_absolute_time, spécifié dans TrackFragmentExtendedHeaderBox et le presentation_time_delta, DOIT être l’heure de présentation de l’événement.The sum of the fragment_absolute_time, specified in the TrackFragmentExtendedHeaderBox, and the presentation_time_delta MUST be the presentation time of the event. L’heure et la durée de présentation DOIVENT être en phase avec les points d’accès du flux (SAP) de type 1 ou 2, comme défini dans la norme [ISO-14496-12] Annexe I. Pour les sorties HLS, l’heure et la durée DOIVENT correspondre aux limites de segment.The presentation time and duration SHOULD align with Stream Access Points (SAP) of type 1 or 2, as defined in [ISO-14496-12] Annex I. For HLS egress, time and duration SHOULD align with segment boundaries. L’heure et la durée de présentation de messages d’événements différents au sein du même flux d’événements NE DOIVENT PAS se chevaucher.The presentation time and duration of different event messages within the same event stream MUST not overlap.
messagemessage tableau d’octetsbyte array ObligatoireRequired Message d'événement.The event message. Pour les messages [SCTE-35], le message est le binaire splice_info_section().For [SCTE-35] messages, the message is the binary splice_info_section(). Pour les messages [SCTE-35], il DOIT s’agir de splice_info_section() de façon à ce que les messages soient envoyés aux clients HLS, Smooth Streaming et Dash conformément à la norme [SCTE-35].For [SCTE-35] messages, this MUST be the splice_info_section() in order for messages to be sent to HLS, Smooth, and Dash clients in compliance with [SCTE-35]. Pour les messages [SCTE-35], le binaire splice_info_section() est la charge utile de la zone « mdat », et il n’EST PAS codé en Base64.For [SCTE-35] messages, the binary splice_info_section() is the payload of the 'mdat' box, and it is NOT base64 encoded.

2.2.4 Annulation et mises à jour2.2.4 Cancellation and Updates

Des messages peuvent être annulés ou mis à jour par l’envoi de plusieurs messages avec les mêmes heure et ID de présentation.Messages can be canceled or updated by sending multiple messages with the same presentation time and ID. L’heure et l’ID de présentation identifient l’événement.The presentation time and ID uniquely identify the event. Le dernier message reçu pour une heure de présentation spécifique qui répond aux contraintes de décompte est le message traité.The last message received for a specific presentation time, that meets pre-roll constraints, is the message that is acted upon. Le message mis à jour remplace tous les messages reçus précédemment.The updated message replaces any previously received messages. La contrainte de décompte est de quatre secondes.The pre-roll constraint is four seconds. Les messages reçus au moins quatre secondes avant l’heure de présentation seront traités.Messages received at least four seconds prior to the presentation time will be acted upon.

3 Remise de métadonnées chronométrées3 Timed Metadata Delivery

Les données de flux de données d’événements sont opaques pour Media Services.Event stream data is opaque to Media Services. Media Services transmet simplement trois éléments d’informations entre le point de terminaison de réception et le point de terminaison client.Media Services merely passes three pieces of information between the ingest endpoint and the client endpoint. Les propriétés suivantes sont fournies au client conformément à la norme [SCTE-35] et/ou au protocole de diffusion en continu du client :The following properties are delivered to the client, in compliance with [SCTE-35] and/or the client's streaming protocol:

  1. Schéma : URN ou URL identifiant le schéma du message.Scheme – a URN or URL identifying the scheme of the message.
  2. Heure de présentation : heure de présentation de l’événement dans la chronologie du média.Presentation Time – the presentation time of the event on the media timeline.
  3. Durée : durée de l’événement.Duration – the duration of the event.
  4. ID : identificateur unique facultatif pour l’événement.ID – an optional unique identifier for the event.
  5. Message : données de l’événement.Message – the event data.

3.1 Manifeste Microsoft Smooth Streaming3.1 Microsoft Smooth Streaming Manifest

Pour plus d’informations sur la mise en forme d’une piste de message partiellement allouée, consultez Gestion d’une piste partiellement allouée [MS-SSTR]. Pour les messages [SCTE35], Smooth Streaming génère le splice_info_section () encodé en Base64 dans un fragment partiellement alloué.Refer to sparse track handling [MS-SSTR] for details on how to format a sparse message track. For [SCTE35] messages, Smooth Streaming will output the base64-encoded splice_info_section() into a sparse fragment. StreamIndex DOIT avoir un sous-type « Data » et CustomAttributes DOIT contenir un attribut avec Nom = « Schema » et Valeur = « urn: scte: scte35:2013:bin ».The StreamIndex MUST have a Subtype of "DATA", and the CustomAttributes MUST contain an Attribute with Name="Schema" and Value="urn:scte:scte35:2013:bin".

Exemple de manifeste de client lissé avec un codage Base64 [SCTE35] splice_info_section ()Smooth Client Manifest Example showing base64-encoded [SCTE35] splice_info_section()

<?xml version="1.0" encoding="utf-8"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="0" TimeScale="10000000" IsLive="true" Duration="0"
  LookAheadFragmentCount="2" DVRWindowLength="6000000000">

  <StreamIndex Type="video" Name="video" Subtype="" Chunks="0" TimeScale="10000000"
    Url="QualityLevels({bitrate})/Fragments(video={start time})">
    <QualityLevel Index="0" Bitrate="230000"
      CodecPrivateData="250000010FC3460B50878A0B5821FF878780490800704704DC0000010E5A67F840" FourCC="WVC1"
      MaxWidth="364" MaxHeight="272"/>
    <QualityLevel Index="1" Bitrate="305000"
      CodecPrivateData="250000010FC3480B50878A0B5821FF87878049080894E4A7640000010E5A67F840" FourCC="WVC1"
      MaxWidth="364" MaxHeight="272"/>
    <c t="0" d="20000000" r="300" />
  </StreamIndex>
  <StreamIndex Type="audio" Name="audio" Subtype="" Chunks="0" TimeScale="10000000"
    Url="QualityLevels({bitrate})/Fragments(audio={start time})">
    <QualityLevel Index="0" Bitrate="96000" CodecPrivateData="1000030000000000000000000000E00042C0"
      FourCC="WMAP" AudioTag="354" Channels="2" SamplingRate="44100" BitsPerSample="16" PacketSize="4459"/>
    <c t="0" d="20000000" r="300" />
  </StreamIndex>
  <StreamIndex Type="text" Name="scte35-sparse-stream" Subtype="DATA" Chunks="0" TimeScale="10000000"
    ParentStreamIndex="video" ManifestOutput="true" 
    Url="QualityLevels({bitrate})/Fragments(captions={start time})">
    <QualityLevel Index="0" Bitrate="0" CodecPrivateData="" FourCC="">
      <CustomAttributes>
        <Attribute Name="Scheme" Value="urn:scte:scte35:2013:bin"/>
      </CustomAttributes>
    </QualityLevel>
    <!-- The following <c> and <f> fragments contains the base64-encoded [SCTE35] splice_info_section() message -->
    <c t="600000000" d="300000000">    <f>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48QWNxdWlyZWRTaWduYWwgeG1sbnM9InVybjpjYWJsZWxhYnM6bWQ6eHNkOnNpZ25hbGluZzozLjAiIGFjcXVpc2l0aW9uUG9pbnRJZGVudGl0eT0iRVNQTl9FYXN0X0FjcXVpc2l0aW9uX1BvaW50XzEiIGFjcXVpc2l0aW9uU2lnbmFsSUQ9IjRBNkE5NEVFLTYyRkExMUUxQjFDQTg4MkY0ODI0MDE5QiIgYWNxdWlzaXRpb25UaW1lPSIyMDEyLTA5LTE4VDEwOjE0OjI2WiI+PFVUQ1BvaW50IHV0Y1BvaW50PSIyMDEyLTA5LTE4VDEwOjE0OjM0WiIvPjxTQ1RFMzVQb2ludERlc2NyaXB0b3Igc3BsaWNlQ29tbWFuZFR5cGU9IjUiPjxTcGxpY2VJbnNlcnQgc3BsaWNlRXZlbnRJRD0iMzQ0NTY4NjkxIiBvdXRPZk5ldHdvcmtJbmRpY2F0b3I9InRydWUiIHVuaXF1ZVByb2dyYW1JRD0iNTUzNTUiIGR1cmF0aW9uPSJQVDFNMFMiIGF2YWlsTnVtPSIxIiBhdmFpbHNFeHBlY3RlZD0iMTAiLz48L1NDVEUzNVBvaW50RGVzY3JpcHRvcj48U3RyZWFtVGltZXM+PFN0cmVhbVRpbWUgdGltZVR5cGU9IkhTUyIgdGltZVZhbHVlPSI1MTUwMDAwMDAwMDAiLz48L1N0cmVhbVRpbWVzPjwvQWNxdWlyZWRTaWduYWw+</f>
    </c>
    <c t="1200000000" d="400000000">      <f>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48QWNxdWlyZWRTaWduYWwgeG1sbnM9InVybjpjYWJsZWxhYnM6bWQ6eHNkOnNpZ25hbGluZzozLjAiIGFjcXVpc2l0aW9uUG9pbnRJZGVudGl0eT0iRVNQTl9FYXN0X0FjcXVpc2l0aW9uX1BvaW50XzEiIGFjcXVpc2l0aW9uU2lnbmFsSUQ9IjRBNkE5NEVFLTYyRkExMUUxQjFDQTg4MkY0ODI0MDE5QiIgYWNxdWlzaXRpb25UaW1lPSIyMDEyLTA5LTE4VDEwOjE0OjI2WiI+PFVUQ1BvaW50IHV0Y1BvaW50PSIyMDEyLTA5LTE4VDEwOjE0OjM0WiIvPjxTQ1RFMzVQb2ludERlc2NyaXB0b3Igc3BsaWNlQ29tbWFuZFR5cGU9IjUiPjxTcGxpY2VJbnNlcnQgc3BsaWNlRXZlbnRJRD0iMzQ0NTY4NjkxIiBvdXRPZk5ldHdvcmtJbmRpY2F0b3I9InRydWUiIHVuaXF1ZVByb2dyYW1JRD0iNTUzNTUiIGR1cmF0aW9uPSJQVDFNMFMiIGF2YWlsTnVtPSIxIiBhdmFpbHNFeHBlY3RlZD0iMTAiLz48L1NDVEUzNVBvaW50RGVzY3JpcHRvcj48U3RyZWFtVGltZXM+PFN0cmVhbVRpbWUgdGltZVR5cGU9IkhTUyIgdGltZVZhbHVlPSI1MTYyMDAwMDAwMDAiLz48L1N0cmVhbVRpbWVzPjwvQWNxdWlyZWRTaWduYWw+</f>
    </c>
  </StreamIndex>
</SmoothStreamingMedia>

3.2 Décoration de manifeste Apple HLS3.2 Apple HLS Manifest Decoration

Azure Media Services prend en charge les balises de manifeste TLS suivantes pour signaler les informations d’usage publicitaire lors d’un événement en direct ou à la demande.Azure Media Services supports the following HLS manifest tags for signaling ad avail information during a live or on-demand event.

  • EXT-X-DATERANGE tel que défini dans Apple TLS [RFC8216]EXT-X-DATERANGE as defined in Apple HLS [RFC8216]
  • EXT-X-CUE tel que défini dans [Adobe-Primetime] - ce mode est considéré comme « hérité ».EXT-X-CUE as defined in [Adobe-Primetime] - this mode is considered "legacy". Les clients doivent adopter la balise EXT-X-DATERANGE lorsque cela est possible.Customers should adopt the EXT-X-DATERANGE tag when possible.

La sortie des données pour chaque balise varie selon le mode de signal de réception utilisé.The data output to each tag will vary based on the ingest signal mode used. Par exemple, la réception RTMP avec le mode simple de Adobe ne contient pas la charge utile encodée en base64 SCTE-35.For example, RTMP ingest with Adobe Simple mode does not contain the full SCTE-35 base64-encoded payload.

La spécification HTTP Live Streaming [RFC8216] Apple autorise la signalisation des messages [SCTE-35].The Apple HTTP Live Streaming [RFC8216] specification allows for signaling of [SCTE-35] messages. Les messages sont insérés dans la sélection de segments dans une balise EXT-X-DATERANGE d’après la section [RFC8216] intitulée « Mapping SCTE-35 into EXT-X-DATERANGE ».The messages are inserted into the segment playlist in an EXT-X-DATERANGE tag per [RFC8216] section titled "Mapping SCTE-35 into EXT-X-DATERANGE". La couche d’application cliente peut analyser la sélection M3U et traiter les balises M3U, ou recevoir les événements par le biais de l’infrastructure Apple Player.The client application layer can parse the M3U playlist and process M3U tags, or receive the events through the Apple player framework.

L’approche RECOMMANDÉE dans Azure Media Services (version d’API 3) consiste à suivre [RFC8216] et à utiliser la balise ext-X_DATERANGE pour la décoration de disponibilité publicitaire [SCTE35] dans le manifeste.The RECOMMENDED approach in Azure Media Services (version 3 API) is to follow [RFC8216] and use the EXT-X_DATERANGE tag for [SCTE35] ad avail decoration in the manifest.

3.2.1.1 Exemple de manifeste HLS .m3u8 présentant la signalisation EXT-X-DATERANGE de SCTE-353.2.1.1 Example HLS manifest .m3u8 showing EXT-X-DATERANGE signaling of SCTE-35

L’exemple suivant de sortie de manifeste HLS du packager dynamique Media Services montre l’utilisation de la balise EXT-X-DATERANGE de [RFC8216] signalant les événements SCTE-35 dans le flux.The following example HLS manifest output from the Media Services dynamic packager shows the use of the EXT-X-DATERANGE tag from [RFC8216] signaling the SCTE-35 events in the stream. En outre, ce flux contient la balise « héritée » EXT-X-CUE pour [Adobe-Primetime].In addition, this stream contains the "legacy" EXT-X-CUE tag for [Adobe-Primetime].

#EXTM3U
#EXT-X-VERSION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:2
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-PROGRAM-DATE-TIME:2020-01-07T19:40:50Z
#EXTINF:1.501500,no-desc
Fragments(video=22567545,format=m3u8-aapl-v8)
#EXTINF:1.501500,no-desc
Fragments(video=22702680,format=m3u8-aapl-v8)
#EXTINF:1.501500,no-desc
Fragments(video=22837815,format=m3u8-aapl-v8)
#EXTINF:1.501500,no-desc
Fragments(video=22972950,format=m3u8-aapl-v8)
#EXTINF:1.501500,no-desc
Fragments(video=23108085,format=m3u8-aapl-v8)
#EXTINF:1.234567,no-desc
Fragments(video=23243220,format=m3u8-aapl-v8)
#EXTINF:0.016689,no-desc
Fragments(video=23354331,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=0.000022
#EXTINF:0.250244,no-desc
Fragments(video=23355833,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=0.250267
#EXTINF:0.850856,no-desc
Fragments(video=23378355,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=1.101122
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:10.610Z",SCTE35-IN=0xFC30200000000005DD00FFF00F05000003EA7F4FFE0165E4D3000101010000607CE85A
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=0.000000,TIME=260.610344,CUE="/DAgAAAAAAXdAP/wDwUAAAPqf0/+AWXk0wABAQEAAGB86Fo="
#EXTINF:0.650644,no-desc
Fragments(video=23454932,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=1.751767
#EXTINF:0.050044,no-desc
Fragments(video=23513490,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=1.801811
#EXTINF:1.451456,no-desc
Fragments(video=23517994,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=3.253267
#EXTINF:1.501500,no-desc
Fragments(video=23648625,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=4.754767
#EXTINF:1.501500,no-desc
Fragments(video=23783760,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=6.256267
#EXTINF:1.501500,no-desc
Fragments(video=23918895,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=7.757767
#EXTINF:1.501500,no-desc
Fragments(video=24054030,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=9.259267
#EXTINF:1.501500,no-desc
Fragments(video=24189165,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=10.760767
#EXTINF:1.501500,no-desc
Fragments(video=24324300,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=12.262267
#EXTINF:1.501500,no-desc
Fragments(video=24459435,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=13.763767
#EXTINF:1.501500,no-desc
Fragments(video=24594570,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=15.265267
#EXTINF:1.501500,no-desc
Fragments(video=24729705,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=16.766767
#EXTINF:1.501500,no-desc
Fragments(video=24864840,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=18.268267
#EXTINF:1.501500,no-desc
Fragments(video=24999975,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=19.769767
#EXTINF:1.501500,no-desc
Fragments(video=25135110,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=21.271267
#EXTINF:1.501500,no-desc
Fragments(video=25270245,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=22.772767
#EXTINF:1.501500,no-desc
Fragments(video=25405380,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=24.274267
#EXTINF:1.501500,no-desc
Fragments(video=25540515,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=25.775767
#EXTINF:1.501500,no-desc
Fragments(video=25675650,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=27.277267
#EXTINF:1.501500,no-desc
Fragments(video=25810785,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=28.778767
#EXTINF:1.501500,no-desc
Fragments(video=25945920,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=30.280267
#EXTINF:1.501500,no-desc
Fragments(video=26081055,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=31.781767
#EXTINF:1.501500,no-desc
Fragments(video=26216190,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=33.283267
#EXTINF:1.501500,no-desc
Fragments(video=26351325,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=34.784767
#EXTINF:1.501500,no-desc
Fragments(video=26486460,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=36.286267
#EXTINF:1.501500,no-desc
Fragments(video=26621595,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=37.787767
#EXTINF:1.501500,no-desc
Fragments(video=26756730,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=39.289267
#EXTINF:1.501500,no-desc
Fragments(video=26891865,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=40.790767
#EXTINF:1.501500,no-desc
Fragments(video=27027000,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=42.292267
#EXTINF:1.501500,no-desc
Fragments(video=27162135,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=43.793767
#EXTINF:1.501500,no-desc
Fragments(video=27297270,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=45.295267
#EXTINF:1.501500,no-desc
Fragments(video=27432405,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=46.796767
#EXTINF:1.501500,no-desc
Fragments(video=27567540,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=48.298267
#EXTINF:1.501500,no-desc
Fragments(video=27702675,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=49.799767
#EXTINF:1.501500,no-desc
Fragments(video=27837810,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=51.301267
#EXTINF:1.501500,no-desc
Fragments(video=27972945,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=52.802767
#EXTINF:1.501500,no-desc
Fragments(video=28108080,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=54.304267
#EXTINF:1.501500,no-desc
Fragments(video=28243215,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=55.805767
#EXTINF:1.501500,no-desc
Fragments(video=28378350,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=57.307267
#EXTINF:1.501500,no-desc
Fragments(video=28513485,format=m3u8-aapl-v8)
#EXT-X-DATERANGE:ID="1002",START-DATE="2020-01-07T19:45:09.509Z",SCTE35-OUT=0xFC30250000000005DD00FFF01405000003EA7FEFFE016461B8FE00526363000101010000F20D5E37
#EXT-X-CUE:ID="1002",TYPE="scte35",DURATION=59.993278,TIME=259.509244,CUE="/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==",ELAPSED=58.808767
#EXTINF:1.501500,no-desc
Fragments(video=28648620,format=m3u8-aapl-v8)

3.2.2 Apple TLS avec Adobe Primetime EXT-X-CUE (hérité)3.2.2 Apple HLS with Adobe Primetime EXT-X-CUE (legacy)

Il existe également une implémentation « héritée » fournie dans Azure Media Services (API version 2 et 3) qui utilise la balise EXT-X-CUE telle que définie dans le « mode SCTE-35 » [Adobe-Primetime].There is also a "legacy" implementation provided in Azure Media Services (version 2 and 3 API) that uses the EXT-X-CUE tag as defined in [Adobe-Primetime] "SCTE-35 Mode". Dans ce mode, Azure Media Services incorpore le code Base64 [SCTE-35] splice_info_section () dans la balise EXT-X-CUE.In this mode, Azure Media Services will embed base64-encoded [SCTE-35] splice_info_section() in the EXT-X-CUE tag.

La balise EXT-X-CUE « héritée » est définie comme ci-dessous et peut également faire référence dans la spécification [Adobe-Primetime].The "legacy" EXT-X-CUE tag is defined as below and also can be normative referenced in the [Adobe-Primetime] specification. Cette option ne doit être utilisée que pour les signaux SCTE35 hérités, si nécessaire. Sinon, la balise recommandée est définie comme EXT-X-DATERANGE dans [RFC8216].This should only be used for legacy SCTE35 signaling where needed, otherwise the recommended tag is defined in [RFC8216] as EXT-X-DATERANGE.

Nom de l’attributAttribute Name TypeType Obligatoire ?Required? DescriptionDescription
CUECUE Chaîne entre guillemets.quoted string ObligatoireRequired Message encodé sous forme de chaîne en Base64, comme décrit dans [RFC4648].The message encoded as a base64-encoded string as described in [RFC4648]. Pour les messages [SCTE-35], il s’agit de la zone splice_info_section() en Base64.For [SCTE-35] messages, this is the base64-encoded splice_info_section().
TYPETYPE Chaîne entre guillemets.quoted string ObligatoireRequired URN ou URL identifiant le schéma du message.A URN or URL identifying the message scheme. Pour les messages [SCTE-35], le type prend la valeur spéciale « scte35 ».For [SCTE-35] messages, the type takes the special value "scte35".
idID Chaîne entre guillemets.quoted string ObligatoireRequired Identificateur unique de l’événement.A unique identifier for the event. Si l’ID n’est pas spécifié lors de la réception du message, Azure Media Services génère un id unique.If the ID is not specified when the message is ingested, Azure Media Services will generate a unique id.
DURATIONDURATION Nombre décimal à virgule flottante.decimal floating point number ObligatoireRequired Durée de l’événement.The duration of the event. Si elle est inconnue, la valeur DOIT être 0.If unknown, the value SHOULD be 0. Les unités sont des fractions de seconde.Units are factional seconds.
ELAPSEDELAPSED Nombre décimal à virgule flottante.decimal floating point number Facultatif, mais requis pour la fenêtre glissante.Optional, but Required for sliding window Lorsque le signal est répété pour prendre en charge une fenêtre glissante de présentation, ce champ DOIT être le temps de présentation qui s’est écoulé depuis le début de l’événement.When the signal is being repeated to support a sliding presentation window, this field MUST be the amount of presentation time that has elapsed since the event began. Les unités sont des fractions de seconde.Units are fractional seconds. Cette valeur peut dépasser la durée originale spécifiée de la jointure ou du segment.This value may exceed the original specified duration of the splice or segment.
TEMPSTIME Nombre décimal à virgule flottante.decimal floating point number ObligatoireRequired Heure de présentation de l’événement.The presentation time of the event. Les unités sont des fractions de seconde.Units are fractional seconds.

La couche d’application du lecteur HLS utilisera le TYPE pour identifier le format du message, décoder celui-ci, appliquer les conversions de temps nécessaires, et traiter l’événement.The HLS player application layer will use the TYPE to identify the format of the message, decode the message, apply the necessary time conversions, and process the event. Les événements sont synchronisé dans la sélection de segments de la piste parent, en fonction de leur horodatage.The events are time synchronized in the segment playlist of the parent track, according to the event timestamp. Ils sont insérés devant le segment le plus proche (balise #EXTINF).They are inserted before the nearest segment (#EXTINF tag).

3.2.3 Exemple de manifeste HLS .m3u8 utilisant la balise « héritée » EXT-X-CUE Adobe Primetime3.2.3 HLS .m3u8 manifest example using "Legacy" Adobe Primetime EXT-X-CUE

L’exemple suivant montre l’ornement de manifeste HLS à l’aide de la balise EXT-X-CUE Adobe Primetime.The following example shows HLS manifest decoration using the Adobe Primetime EXT-X-CUE tag. Le paramètre « CUE » contient uniquement les propriétés TYPE et Duration, ce qui signifie qu’il s’agissait d’une source RTMP utilisant la signalisation en mode simple Adobe.The "CUE" parameter contains only the TYPE and Duration properties which means that this was an RTMP source using Adobe "simple" mode signaling. S’il s’agit d’un signal en mode SCTE-35, la balise inclut la charge utile SCTE-35 binaire encodée en base64, comme indiqué dans l’exemple 3.2.1.1.If this was a SCTE-35 mode signal, the tag would include the base64 encoded binary SCTE-35 payload as seen in the 3.2.1.1 example.

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:11
#EXT-X-PROGRAM-DATE-TIME:2019-12-10T09:18:14Z
#EXTINF:10.010000,no-desc
Fragments(video=4011540820,format=m3u8-aapl)
#EXTINF:10.010000,no-desc
Fragments(video=4011550830,format=m3u8-aapl)
#EXTINF:10.010000,no-desc
Fragments(video=4011560840,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000
#EXTINF:8.008000,no-desc
Fragments(video=4011570850,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=0.593000
#EXTINF:4.170000,no-desc
Fragments(video=4011578858,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=4.763000
#EXTINF:9.844000,no-desc
Fragments(video=4011583028,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=14.607000
#EXTINF:10.010000,no-desc
Fragments(video=4011592872,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=24.617000
#EXTINF:10.010000,no-desc
Fragments(video=4011602882,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=34.627000
#EXTINF:10.010000,no-desc
Fragments(video=4011612892,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=44.637000
#EXTINF:10.010000,no-desc
Fragments(video=4011622902,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=54.647000
#EXTINF:10.010000,no-desc
Fragments(video=4011632912,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=64.657000
#EXTINF:10.010000,no-desc
Fragments(video=4011642922,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=74.667000
#EXTINF:10.010000,no-desc
Fragments(video=4011652932,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=84.677000
#EXTINF:10.010000,no-desc
Fragments(video=4011662942,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=94.687000
#EXTINF:10.010000,no-desc
Fragments(video=4011672952,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=104.697000
#EXTINF:10.010000,no-desc
Fragments(video=4011682962,format=m3u8-aapl)
#EXT-X-CUE:ID=4011578265,TYPE="SpliceOut",DURATION=119.987000,TIME=4011578.265000,ELAPSED=114.707000
#EXTINF:10.010000,no-desc
Fragments(video=4011692972,format=m3u8-aapl)
#EXTINF:8.008000,no-desc
Fragments(video=4011702982,format=m3u8-aapl)

3.2.4 Gestion des messages HLS pour une balise « héritée » EXT-X-CUE Adobe Primetime3.2.4 HLS Message Handling for "Legacy" Adobe Primetime EXT-X-CUE

Les événements sont signalés dans la sélection de segments de chaque piste audio et vidéo. La position de la balise EXT-X-CUE DOIT toujours être immédiatement devant le premier segment HLS (pour jointure externe ou début de segment) ou immédiatement derrière les derniers segments HLS (pour jointure interne ou fin du segment) auxquels ses attributs TIME et DURATION se rapportent, comme requis par [Adobe-Primetime].Events are signaled in the segment playlist of each video and audio track. The position of the EXT-X-CUE tag MUST always be either immediately before the first HLS segment (for splice out or segment start) or immediately after the last HLS segment (for splice in or segment end) to which its TIME and DURATION attributes refer, as required by [Adobe-Primetime].

Quand une fenêtre glissante de présentation est activée, la balise EXT-X-CUE DOIT être répétée assez souvent pour que la jointure ou le segment soient toujours entièrement décrits dans la sélection de segments, et l’attribut ELAPSED DOIT être utilisé pour indiquer la durée d’activité de la jointure ou du segment, comme requis par [Adobe-Primetime].When a sliding presentation window is enabled, the EXT-X-CUE tag MUST be repeated often enough that the splice or segment is always fully described in the segment playlist, and the ELAPSED attribute MUST be used to indicate the amount of time the splice or segment has been active, as required by [Adobe-Primetime].

Quand une fenêtre glissante de présentation est activée, les balises EXT-X-CUE sont supprimées de la sélection de segments lorsque le temps de multimédia auquel elles font référence est en dehors de la fenêtre glissante de présentation.When a sliding presentation window is enabled, the EXT-X-CUE tags are removed from the segment playlist when the media time that they refer to has rolled out of the sliding presentation window.

3.3 Décoration de manifeste DASH (MPD)3.3 DASH Manifest Decoration (MPD)

[MPEGDASH] permet de signaler les événements de trois façons :[MPEGDASH] provides three ways to signal events:

  1. Événements signalés dans le MPD EventStreamEvents signaled in the MPD EventStream
  2. Événements signalés dans la bande à l’aide de la boîte de message d’événement (« EMSG »)Events signaled in-band using the Event Message Box ('emsg')
  3. Une combinaison de 1 et 2A combination of both 1 and 2

Les événements signalés dans le MPD EventStream sont utiles pour une diffusion en continu VOD, car les clients ont accès à tous les événements, dès que le MPD est téléchargé.Events signaled in the MPD EventStream are useful for VOD streaming because clients have access to all the events, immediately when the MPD is downloaded. Ils sont également utiles pour la signalisation SSAI, où le fournisseur SSAI en aval doit analyser les signaux à partir d’un manifeste MPD de plusieurs périodes, et insérer du contenu publicitaire de manière dynamique.It is also useful for SSAI signaling, where the downstream SSAI vendor needs to parse the signals from a multi-period MPD manifest, and insert ad content dynamically. La solution intrabande (« EMSG ») est utile pour le streaming en direct où les clients n’ont pas besoin de télécharger à nouveau le MPD, ou il n’y a aucune manipulation de manifeste SSAI entre le client et l’origine.The in-band ('emsg')solution is useful for live streaming where clients do not need to download the MPD again, or there is no SSAI manifest manipulation happening between the client and the origin.

Le comportement par défaut Azure Media Services pour DASH est de signaler dans MPD EventStreams MPD et intrabande à l’aide de la boîte de message d’événement (« EMSG »).Azure Media Services default behavior for DASH is to signal both in the MPD EventStream and in-band using the Event Message Box ('emsg').

Les messages de signal ingérés via [RTMP] ou [MS-SSTR-Ingest] sont mappés dans des événements DASH, à l’aide de boîtes « EMSG » intrabandes et/ou MPD EventStreams.Cue messages ingested over [RTMP] or [MS-SSTR-Ingest] are mapped into DASH events, using in-band 'emsg' boxes and/or in-MPD EventStreams.

La signalisation SCTE-35 intrabande pour DASH suit la définition et les exigences définies dans [SCTE-214-3] et également dans la section 13.12.2 de la norme [DASH-IF-IOP] (« SCTE35 Events »).In-band SCTE-35 signaling for DASH follows the definition and requirements defined in [SCTE-214-3] and also in [DASH-IF-IOP] section 13.12.2 ('SCTE35 Events').

Pour le transport intrabande [SCTE-35], la boîte de message d’événement (« EMSG ») utilise le schemeId = « urn:scte:scte35:2013:bin ».For in-band [SCTE-35] carriage, the Event Message box ('emsg') uses the schemeId = "urn:scte:scte35:2013:bin". Pour la décoration du manifeste MPD, le schemeId EventStream utilise « urn:scte:scte35:2014:xml+bin ».For MPD manifest decoration the EventStream schemeId uses "urn:scte:scte35:2014:xml+bin". Ce format est une représentation XML de l’événement, qui comprend une sortie binaire codée en base64 du message SCTE-35 complet qui est arrivé à la réception.This format is an XML representation of the event which includes a binary base64-encoded output of the complete SCTE-35 message that arrived at ingest.

Les définitions de référence normative de transport des messages de signal [SCTE-35] en DASH sont disponibles dans la section 6.7.4 de la norme [SCTE-214-1] (MPD) et la section 7.3.2 de la norme [SCTE-214-3] (transport des messages de signal SCTE 35).Normative reference definitions of carriage of [SCTE-35] cue messages in DASH are available in [SCTE-214-1] sec 6.7.4 (MPD) and [SCTE-214-3] sec 7.3.2 (Carriage of SCTE 35 cue messages).

3.3.1 Signalisation EventStream MPEG DASH (MPD)3.3.1 MPEG DASH (MPD) EventStream Signaling

La décoration de manifeste (MPD) sera signalée dans le MPD à l’aide de l’élément EventStream qui apparaît dans l’élément Period.Manifest (MPD) decoration of events will be signaled in the MPD using the EventStream element, which appears within the Period element. Le schemeId utilisé est « urn:scte:scte35:2014:xml+bin ».The schemeId used is "urn:scte:scte35:2014:xml+bin".

Notes

À des fins de concision, [SCTE-35] autorise l’utilisation de la section codée en Base64 dans l’élément Signal.Binary (plutôt que l’élément Signal.SpliceInfoSection) comme alternative au transport d’un message de signal entièrement analysé.For brevity purposes [SCTE-35] allows use of the base64-encoded section in Signal.Binary element (rather than the Signal.SpliceInfoSection element) as an alternative to carriage of a completely parsed cue message. Azure Media Services utilise cette approche « xml+bin » pour signaler dans le manifeste MPD.Azure Media Services uses this 'xml+bin' approach to signaling in the MPD manifest. Il s’agit également de la méthode recommandée utilisée dans la norme [DASH-IF-IOP] - Voir la section intitulée « flux d’événements d’insertion publicitaire » du guide DASH-IF-IOPThis is also the recommended method used in the [DASH-IF-IOP] - see section titled 'Ad insertion event streams' of the DASH IF IOP guideline

L’élément EventStream a les attributs suivants :The EventStream element has the following attributes:

Nom de l’attributAttribute Name TypeType Obligatoire ?Required? DescriptionDescription
scheme_id_urischeme_id_uri stringstring ObligatoireRequired Identifie le schéma du message.Identifies the scheme of the message. Le schéma est défini sur la valeur de l’attribut Scheme dans la zone de manifeste du serveur en direct.The scheme is set to the value of the Scheme attribute in the Live Server Manifest box. La valeur DOIT être un URN ou une URL identifiant le schéma de message. Le schemeId de sortie pris en charge doit être « urn:scte:scte35:2014: xml+bin » par la section 6.7.4 de la norme [SCTE-214-1] (MPD), car le service prend en charge uniquement « xml+bin » à ce stade pour la concision dans le MPD.The value SHOULD be a URN or URL identifying the message scheme; The supported output schemeId should be "urn:scte:scte35:2014:xml+bin" per [SCTE-214-1] sec 6.7.4 (MPD), as the service supports only "xml+bin" at this time for brevity in the MPD.
valuevalue stringstring FacultatifOptional Valeur de chaîne supplémentaire utilisée par les propriétaires du schéma pour personnaliser la sémantique du message.An additional string value used by the owners of the scheme to customize the semantics of the message. Afin de différencier plusieurs flux d’événements dont le schéma est identique, la valeur DOIT être définie sur le nom du flux d’événements (trackName pour [MS-SSTR-Ingest] ou nom du message AMF pour une réception [RTMP]).In order to differentiate multiple event streams with the same scheme, the value MUST be set to the name of the event stream (trackName for [MS-SSTR-Ingest] or AMF message name for [RTMP] ingest).
Échelle de tempsTimescale Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired L’échelle de temps, en cycles par seconde.The timescale, in ticks per second.

3.3.2 Exemples de flux d’événements pour MPEG DASH3.3.2 Example Event Streams for MPEG DASH

3.3.2.1 Exemple de signalement de manifeste MPEG DASH .mpd de la diffusion RTMP en continu utilisant le mode simple Adobe3.3.2.1 Example MPEG DASH .mpd manifest signaling of RTMP streaming using Adobe simple mode

L’exemple suivant montre un extrait EventStream du packager dynamique Media Services pour un flux RTMP utilisant la signalisation en mode « simple » Adobe.The following example shows an excerpt EventStream from the Media Services dynamic packager for an RTMP stream using Adobe "simple" mode signaling.

<!-- Example EventStream element using "urn:com:adobe:dpi:simple:2015" Adobe simple signaling per [Adobe-Primetime] -->
    <EventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="simplesignal" timescale="10000000">
        <Event presentationTime="1583497601000000" duration="300000000" id="1085900"/>
        <Event presentationTime="1583500901666666" duration="300000000" id="1415966"/>
        <Event presentationTime="1583504202333333" duration="300000000" id="1746033"/>
        <Event presentationTime="1583507502666666" duration="300000000" id="2076066"/>
        <Event presentationTime="1583510803333333" duration="300000000" id="2406133"/>
        <Event presentationTime="1583514104000000" duration="300000000" id="2736200"/>
        <Event presentationTime="1583517404666666" duration="300000000" id="3066266"/>
        <Event presentationTime="1583520705333333" duration="300000000" id="3396333"/>
        <Event presentationTime="1583524006000000" duration="300000000" id="3726400"/>
        <Event presentationTime="1583527306666666" duration="300000000" id="4056466"/>
        <Event presentationTime="1583530607333333" duration="300000000" id="4386533"/>
    </EventStream>

3.3.2.2 Exemple de signalement de manifeste MPEG DASH .mpd d’un flux RTMP utilisant le mode SCTE-35 Adobe3.3.2.2 Example MPEG DASH .mpd manifest signaling of an RTMP stream using Adobe SCTE-35 mode

L’exemple suivant montre un extrait EventStream du packager dynamique Media Services pour un flux RTMP utilisant la signalisation en mode SCTE-35 Adobe.The following example shows an excerpt EventStream from the Media Services dynamic packager for an RTMP stream using Adobe SCTE-35 mode signaling.

<!-- Example EventStream element using xml+bin style signaling per [SCTE-214-1] -->

      <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" value="scte35" timescale="10000000">
        <Event presentationTime="2595092444" duration="11011000" id="1002">
            <Signal xmlns="http://www.scte.org/schemas/35/2016">
                <Binary>/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==</Binary>
            </Signal>
        </Event>
        <Event presentationTime="2606103444" id="1002">
            <Signal xmlns="http://www.scte.org/schemas/35/2016">
                <Binary>/DAgAAAAAAXdAP/wDwUAAAPqf0/+AWXk0wABAQEAAGB86Fo=</Binary>
            </Signal>
        </Event>
      </EventStream>

Important

Notez que presentationTime est l’heure de présentation de l’événement [SCTE-35] traduite pour être relative à l’heure de début de la période, et non à l’heure d’arrivée du message.Note that presentationTime is the presentation time of the [SCTE-35] event translated to be relative to the Period Start time, not the arrival time of the message. [MPEGDASH] définit le Event@presentationTime comme « Spécifie le temps de présentation multimédia de l’événement par rapport au début de la période.[MPEGDASH] defines the Event@presentationTime as "Specifies the presentation time of the event relative to the start of the Period. La valeur de la durée de présentation en secondes est la division de la valeur de cet attribut et la valeur de l’attribut EventStream@timescale.The value of the presentation time in seconds is the division of the value of this attribute and the value of the EventStream@timescale attribute. Si elle n’est pas présente, la valeur de l’heure de présentation est 0.If not present, the value of the presentation time is 0.

3.3.3.1 Exemple de manifeste MPEG DASH (MPD) avec une période unique, EventStream, utilisant des signaux en mode simple Adobe3.3.3.1 Example MPEG DASH manifest (MPD) with single-period, EventStream, using Adobe simple mode signals

L’exemple suivant montre la sortie du packager dynamique Media Services pour un flux RTMP source utilisant la méthode de signal publicitaire en mode « simple » Adobe.The following example shows the output from the Media Services dynamic packager for a source RTMP stream using the Adobe "simple" mode ad signal method. La sortie est un manifeste de période unique qui affiche un EventStream à l’aide de l’URI schemeId défini sur « urn:com:adobe:dpi:simple:2015 » et la propriété de valeur définie sur « simplesignal ».The output is a single period manifest showing an EventStream using the schemeId Uri set to "urn:com:adobe:dpi:simple:2015" and value property set to "simplesignal". Chaque signal simple est fourni dans un élément d’événement avec les propriétés @presentationTime, @durationet @id remplies en fonction des signaux simples entrants.Each simple signal is provided in an Event element with the @presentationTime, @duration, and @id properties populated based on the incoming simple signals.

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediaPresentationDuration="PT28M1.680S" minBufferTime="PT3S">
    <Period>
        <EventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="simplesignal" timescale="1000">
            <Event presentationTime="4011578265" duration="119987" id="4011578265"/>
        </EventStream>
        <AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.4D4028" maxWidth="1920" maxHeight="1080" startWithSAP="1">
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="simplesignal"/>
            <ProducerReferenceTime id="4011460740" type="0" wallClockTime="2020-01-25T19:35:54.740Z" presentationTime="4011460740"/>
            <SegmentTemplate timescale="1000" presentationTimeOffset="4011460740" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="4011460740" d="2002" r="57"/>
                    <S d="1401"/>
                    <S d="601"/>
                    <S d="2002"/>

                     <!--> ... video segments truncated for sample brevity </-->

                </SegmentTimeline>
            </SegmentTemplate>
            <Representation id="1_V_video_14759481473095519504" bandwidth="6000000" width="1920" height="1080"/>
            <Representation id="1_V_video_1516803357996956148" bandwidth="4000000" codecs="avc1.4D401F" width="1280" height="720"/>
            <Representation id="1_V_video_5430608182379669372" bandwidth="2600000" codecs="avc1.4D401F" width="960" height="540"/>
            <Representation id="1_V_video_3780180650986497347" bandwidth="1000000" codecs="avc1.4D401E" width="640" height="360"/>
            <Representation id="1_V_video_13759117363700265707" bandwidth="699000" codecs="avc1.4D4015" width="480" height="270"/>
            <Representation id="1_V_video_6140004908920393176" bandwidth="400000" codecs="avc1.4D4015" width="480" height="270"/>
            <Representation id="1_V_video_10673801877453424365" bandwidth="200000" codecs="avc1.4D400D" width="320" height="180"/>
        </AdaptationSet>
        <AdaptationSet id="2" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.2">
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="simplesignal"/>
            <ProducerReferenceTime id="4011460761" type="0" wallClockTime="2020-01-25T19:35:54.761Z" presentationTime="4011460761"/>
            <Label>audio</Label>
            <SegmentTemplate timescale="1000" presentationTimeOffset="4011460740" media="QualityLevels($Bandwidth$)/Fragments(audio=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(audio=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="4011460761" d="1984"/>
                    <S d="2005" r="1"/>
                    <S d="2006"/>

                    <!--> ... audio segments truncated for example brevity </-->

                </SegmentTimeline>
            </SegmentTemplate>
            <Representation id="5_A_audio_17504386117102112482" bandwidth="128000" audioSamplingRate="48000"/>
        </AdaptationSet>
    </Period>
</MPD>

3.3.3.2 Exemple de manifeste MPEG DASH (MPD) avec plusieurs périodes, EventStream, utilisant une signalisation en mode SCTE35 Adobe3.3.3.2 Example MPEG DASH manifest (MPD) with multi-period, EventStream, using Adobe SCTE35 mode signaling

L’exemple suivant montre la sortie du packager dynamique Media Services pour un flux RTMP source utilisant la signalisation en mode SCTE35 Adobe.The following example shows the output from the Media Services dynamic packager for a source RTMP stream using the Adobe SCTE35 mode signaling. Dans ce cas, le manifeste de sortie est un DASH .mpd à plusieurs périodes avec un élément EventStream, la propriété @schemeIdUri définie sur « urn:scte:scte35:2014:xml+bin » et une propriété @value définie sur « scte35 ».In this case, the output manifest is a multi-period DASH .mpd with an EventStream element, and @schemeIdUri property set to "urn:scte:scte35:2014:xml+bin" and a @value property set to "scte35". Chaque élément d’événement dans le flux EventStream contient le signal SCTE35 binaire complet encodé en base64Each Event element in the EventStream contains the full base64 encoded binary SCTE35 signal

<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" publishTime="2020-01-07T19:42:44Z" minimumUpdatePeriod="PT0S" timeShiftBufferDepth="PT58M56S" availabilityStartTime="2020-01-07T19:40:50Z" minBufferTime="PT4S">
    <Period start="PT2M48.168S" id="main-content_0">
        <AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640020" maxWidth="1280" maxHeight="720" startWithSAP="1">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <SegmentTemplate timescale="90000" presentationTimeOffset="15135120" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="15135120" d="135135" r="59"/>
                    <S d="111111"/>
                    <S d="1502"/>
                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="15135120" type="0" wallClockTime="2020-01-07T19:40:50Z" presentationTime="15135120"/>
            <Representation id="1_V_video_5322324134428436312" bandwidth="3500000" width="1280" height="720"/>
            <Representation id="1_V_video_16981495139092747609" bandwidth="2200000" width="960" height="540"/>
            <Representation id="1_V_video_1384718563016940751" bandwidth="1350000" codecs="avc1.64001F" width="704" height="396"/>
            <Representation id="1_V_video_4425970933904124207" bandwidth="850000" codecs="avc1.64001E" width="512" height="288"/>
            <Representation id="1_V_video_11952982975776937431" bandwidth="550000" codecs="avc1.640016" width="384" height="216"/>
            <Representation id="1_V_video_10673801877453424365" bandwidth="200000" codecs="avc1.640015" width="340" height="192"/>
        </AdaptationSet>
        <AdaptationSet id="2" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.5" lang="en">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <Label>audio</Label>
            <SegmentTemplate timescale="44100" presentationTimeOffset="7416208" media="QualityLevels($Bandwidth$)/Fragments(audio=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(audio=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="7417856" d="133120"/>
                    <S d="132096" r="1"/>
                    
                    <!--> ... aduio segments truncated for sample brevity </-->

                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="7417856" type="0" wallClockTime="2020-01-07T19:40:50.037Z" presentationTime="7417856"/>
            <Representation id="5_A_audio_17504386117102112482" bandwidth="128000" audioSamplingRate="44100"/>
        </AdaptationSet>
    </Period>
    <Period start="PT4M19.509S" id="scte-35_0">
        <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" value="scte35" timescale="10000000">
            <Event presentationTime="2595092444" duration="11011000" id="1002">
                <Signal xmlns="http://www.scte.org/schemas/35/2016">
                    <Binary>/DAlAAAAAAXdAP/wFAUAAAPqf+/+AWRhuP4AUmNjAAEBAQAA8g1eNw==</Binary>
                </Signal>
            </Event>
            <Event presentationTime="2606103444" id="1002">
                <Signal xmlns="http://www.scte.org/schemas/35/2016">
                    <Binary>/DAgAAAAAAXdAP/wDwUAAAPqf0/+AWXk0wABAQEAAGB86Fo=</Binary>
                </Signal>
            </Event>
        </EventStream>
        <AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640020" maxWidth="1280" maxHeight="720" startWithSAP="1">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <SegmentTemplate timescale="90000" presentationTimeOffset="23355832" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="23355833" d="22522"/>
                    <S d="76577"/>
                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="23355833" type="0" wallClockTime="2020-01-07T19:42:21.341Z" presentationTime="23355833"/>
            <Representation id="1_V_video_5322324134428436312" bandwidth="3500000" width="1280" height="720"/>
            <Representation id="1_V_video_16981495139092747609" bandwidth="2200000" width="960" height="540"/>
            <Representation id="1_V_video_1384718563016940751" bandwidth="1350000" codecs="avc1.64001F" width="704" height="396"/>
            <Representation id="1_V_video_4425970933904124207" bandwidth="850000" codecs="avc1.64001E" width="512" height="288"/>
            <Representation id="1_V_video_11952982975776937431" bandwidth="550000" codecs="avc1.640016" width="384" height="216"/>
            <Representation id="1_V_video_10673801877453424365" bandwidth="200000" codecs="avc1.640015" width="340" height="192"/>
        </AdaptationSet>
        <AdaptationSet id="2" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.5" lang="en">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <Label>audio</Label>
            <SegmentTemplate timescale="44100" presentationTimeOffset="11444358" media="QualityLevels($Bandwidth$)/Fragments(audio=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(audio=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="11446272" d="49152"/>
                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="11446272" type="0" wallClockTime="2020-01-07T19:42:21.384Z" presentationTime="11446272"/>
            <Representation id="5_A_audio_17504386117102112482" bandwidth="128000" audioSamplingRate="44100"/>
        </AdaptationSet>
    </Period>
    <Period start="PT4M20.610S" id="main-content_1">
        <AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640020" maxWidth="1280" maxHeight="720" startWithSAP="1">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <SegmentTemplate timescale="90000" presentationTimeOffset="23454931" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="23454932" d="58558"/>
                    <S d="4504"/>
                    <S d="130631"/>
                    <S d="135135" r="12"/>
                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="23454932" type="0" wallClockTime="2020-01-07T19:42:22.442Z" presentationTime="23454932"/>
            <Representation id="1_V_video_5322324134428436312" bandwidth="3500000" width="1280" height="720"/>
            <Representation id="1_V_video_16981495139092747609" bandwidth="2200000" width="960" height="540"/>
            <Representation id="1_V_video_1384718563016940751" bandwidth="1350000" codecs="avc1.64001F" width="704" height="396"/>
            <Representation id="1_V_video_4425970933904124207" bandwidth="850000" codecs="avc1.64001E" width="512" height="288"/>
            <Representation id="1_V_video_11952982975776937431" bandwidth="550000" codecs="avc1.640016" width="384" height="216"/>
            <Representation id="1_V_video_10673801877453424365" bandwidth="200000" codecs="avc1.640015" width="340" height="192"/>
        </AdaptationSet>
        <AdaptationSet id="2" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.5" lang="en">
            <InbandEventStream schemeIdUri="urn:mpeg:dash:event:2012" value="1"/>
            <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>
            <Label>audio</Label>
            <SegmentTemplate timescale="44100" presentationTimeOffset="11492916" media="QualityLevels($Bandwidth$)/Fragments(audio=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(audio=i,format=mpd-time-csf)">
                <SegmentTimeline>
                    <S t="11495424" d="28672"/>
                    <S d="1024"/>
                    <S d="131072"/>
                    <S d="132096"/>
                    <S d="133120"/>
                    <S d="132096" r="1"/>
                    <S d="133120"/>
                </SegmentTimeline>
            </SegmentTemplate>
            <ProducerReferenceTime id="11495424" type="0" wallClockTime="2020-01-07T19:42:22.499Z" presentationTime="11495424"/>
            <Representation id="5_A_audio_17504386117102112482" bandwidth="128000" audioSamplingRate="44100"/>
        </AdaptationSet>
    </Period>
</MPD>

3.3.4 Signalisation de zone de message d’événement dans la bande MPEG DASH3.3.4 MPEG DASH In-band Event Message Box Signaling

Un flux d’événement dans la bande nécessite que le MPD ait un élément InbandEventStream au niveau défini de l’adaptation.An in-band event stream requires the MPD to have an InbandEventStream element at the Adaptation Set level. Cet élément a un attribut schemeIdUri obligatoire et un attribut d’échelle de temps facultatif, qui s’affichent également dans la zone de message d’événement (« emsg »).This element has a mandatory schemeIdUri attribute and optional timescale attribute, which also appear in the Event Message Box ('emsg'). Les zones de message d’événement avec des identificateurs de schéma qui ne sont pas définis dans le MPD ne DOIVENT PAS être présentes.Event message boxes with scheme identifiers that are not defined in the MPD SHOULD not be present.

Pour le transport intrabande [SCTE-35], les signaux DOIVENT utiliser le schemeId=« urn:scte:scte35:2013:bin ».For in-band [SCTE-35] carriage, signals MUST use the schemeId = "urn:scte:scte35:2013:bin". Les définitions normatives du transport des messages intrabandes [SCTE-35] sont définies dans la section 7.3.2 de la norme [SCTE-214-3] (transport des messages de signal SCTE 35).Normative definitions of carriage of [SCTE-35] in-band messages are defined in [SCTE-214-3] sec 7.3.2 (Carriage of SCTE 35 cue messages).

Les détails suivants décrivent les valeurs spécifiques que le client doit attendre dans le « EMSG » en conformité avec la norme [SCTE-214-3] :The following details outline the specific values the client should expect in the 'emsg' in compliance with [SCTE-214-3]:

Nom du champField Name Type de champField Type Obligatoire ?Required? DescriptionDescription
scheme_id_urischeme_id_uri stringstring ObligatoireRequired Identifie le schéma du message.Identifies the scheme of the message. Le schéma est défini sur la valeur de l’attribut Scheme dans la zone de manifeste du serveur en direct.The scheme is set to the value of the Scheme attribute in the Live Server Manifest box. La valeur DOIT être un URN identifiant le schéma de message.The value MUST be a URN identifying the message scheme. Pour les messages [SCTE-35], il DOIT s’agir de « urn:scte:scte35:2013:bin » en conformité avec la norme [SCTE-214-3]For [SCTE-35] messages, this MUST be "urn:scte:scte35:2013:bin" in compliance with [SCTE-214-3]
ValeurValue stringstring ObligatoireRequired Valeur de chaîne supplémentaire utilisée par les propriétaires du schéma pour personnaliser la sémantique du message.An additional string value used by the owners of the scheme to customize the semantics of the message. Afin de différencier plusieurs flux d’événements dont le schéma est identique, la valeur sera définie sur le nom du flux d’événements (trackName pour une réception lisse ou nom du message AMF pour une réception RTMP).In order to differentiate multiple event streams with the same scheme, the value will be set to the name of the event stream (trackName for Smooth ingest or AMF message name for RTMP ingest).
Échelle de tempsTimescale Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired Échelle de temps, en battements par seconde, des champs d’heures et de durée dans la zone « emsg ».The timescale, in ticks per second, of the times and duration fields within the 'emsg' box.
Presentation_time_deltaPresentation_time_delta Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired Delta de temps de présentation multimédia entre l’heure de la présentation de l’événement et l’heure de présentation la plus précoce dans ce segment.The media presentation time delta of the presentation time of the event and the earliest presentation time in this segment. L’heure et la durée de présentation DOIVENT être en phase avec les points d’accès de flux (SAP) de type 1 ou 2, comme définis dans [ISO-14496-12] l’annexe I.The presentation time and duration SHOULD align with Stream Access Points (SAP) of type 1 or 2, as defined in [ISO-14496-12] Annex I.
event_durationevent_duration Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired Durée de l’événement ou 0xFFFFFFFF pour indiquer une durée inconnue.The duration of the event, or 0xFFFFFFFF to indicate an unknown duration.
IdId Entier non signé 32 bits32-bit unsigned integer ObligatoireRequired Identifie cette instance du message.Identifies this instance of the message. Les messages dont la sémantique est identique auront la même valeur.Messages with equivalent semantics shall have the same value. Si l’ID n’est pas spécifié lors de la réception du message, Azure Media Services génère un id unique.If the ID is not specified when the message is ingested, Azure Media Services will generate a unique id.
Message_dataMessage_data tableau d’octetsbyte array ObligatoireRequired Message d'événement.The event message. Pour les messages [SCTE-35], leurs données sont le binaire splice_info_section() en conformité avec la norme [SCTE-214-3]For [SCTE-35] messages, the message data is the binary splice_info_section() in compliance with [SCTE-214-3]

Exemple d’entité InBandEvenStream pour le mode simple AdobeExample InBandEvenStream entity for Adobe Simple mode


      <InbandEventStream schemeIdUri="urn:com:adobe:dpi:simple:2015" value="amssignal"/>

3.3.5 Gestion des messages DASH3.3.5 DASH Message Handling

Les événements sont signalés dans la bande, dans la zone « emsg », pour les pistes tant audio que vidéo.Events are signaled in-band, within the 'emsg' box, for both video and audio tracks. La signalisation se produit pour toutes les demandes de segments pour lesquelles la valeur presentation_time_delta est inférieure ou égale à 15 secondes.The signaling occurs for all segment requests for which the presentation_time_delta is 15 seconds or less.

Quand une fenêtre de présentation glissante est activée, les messages d’événement sont supprimés du MPD lorsque la somme du temps et la durée du message d’événement sont inférieures au temps des données multimédias dans le manifeste.When a sliding presentation window is enabled, event messages are removed from the MPD when the sum of the time and duration of the event message is less than the time of the media data in the manifest. En d’autres termes, les messages d’événements sont supprimés du manifeste lorsque le temps multimédia auquel ils font référence sort de la fenêtre glissante de présentation.In other words, the event messages are removed from the manifest when the media time to which they refer has rolled out of the sliding presentation window.

4. Guide d’implémentation de l’ingestion SCTE-35 pour les fournisseurs d’encodeurs4. SCTE-35 Ingest Implementation Guidance for Encoder Vendors

Les instructions suivantes sont des problèmes courants qui peuvent avoir un impact sur l’implémentation d’un fournisseur d’encodeurs de cette spécification.The following guidelines are common issues that can impact an encoder vendor's implementation of this specification. Les instructions ci-dessous ont été collectées en fonction des commentaires de partenaires réels pour faciliter l’implémentation de cette spécification pour d’autres.The guidelines below have been collected based on real world partner feedback to make it easier to implement this specification for others.

Les messages [SCTE-35] sont reçus dans un format binaire à l’aide du schéma « urn:scte:scte35:2013:bin » pour la [réception MS-SSTR] et le type « scte35 » pour la réception RTMP.[SCTE-35] messages are ingested in binary format using the Scheme "urn:scte:scte35:2013:bin" for [MS-SSTR-Ingest] and the type "scte35" for [RTMP] ingest. Pour faciliter la conversion d’une synchronisation [SCTE-35], qui est basée sur des horodatages de présentation de flux de transport MPEG-2 (PTS), un mappage entre PTS (pts_time + pts_adjustment de splice_time()) et la chronologie du média sont fournis par l’heure de présentation de l’événement (champ fragment_absolute_time pour la réception lisse et champ d’heure pour la réception RTMP).To facilitate the conversion of [SCTE-35] timing, which is based on MPEG-2 transport stream presentation time stamps (PTS), a mapping between PTS (pts_time + pts_adjustment of the splice_time()) and the media timeline is provided by the event presentation time (the fragment_absolute_time field for Smooth ingest and the time field for RTMP ingest). Le mappage est nécessaire, car la valeur PTS 33 bits change environ toutes les 26,5 heures.The mapping is necessary because the 33-bit PTS value rolls over approximately every 26.5 hours.

La réception de diffusion en continu lisse [MS-SSTR-Ingest] nécessite que la zone de données multimédias (« mdat ») contienne la valeur splice_info_section() définie dans la norme [SCTE-35].Smooth Streaming ingest [MS-SSTR-Ingest] requires that the Media Data Box ('mdat') MUST contain the splice_info_section() defined in [SCTE-35].

Pour la réception RTMP, l’attribut cue du message AMF est défini sur la valeur splice_info_section() codée en base64 définie dans la norme [SCTE-35].For RTMP ingest,the cue attribute of the AMF message is set to the base64-encoded splice_info_section() defined in [SCTE-35].

Lorsque les messages ont le format décrit ci-dessus, ils sont envoyés aux clients HLS, Lisse et DASH comme définis ci-dessus.When the messages have the format described above, they are sent to HLS, Smooth, and DASH clients as defined above.

Lors du test de votre implémentation avec la plateforme Azure Media Services, commencez par effectuer des tests avec un LiveEvent « pass-through » avant de passer au test sur un LiveEvent d’encodage.When testing your implementation with the Azure Media Services platform, please start testing with a "pass-through" LiveEvent first, before moving to testing on an encoding LiveEvent.


Historique des modificationsChange History

DateDate ModificationsChanges
02/07/1907/2/19 Révision de la réception RTMP pour prise en charge SCTE35, ajout de RTMP « onCuePoint » pour Elemental LiveRevised RTMP ingest for SCTE35 support, added RTMP "onCuePoint" for Elemental Live
22/08/1908/22/19 Mise à jour pour ajouter OnUserDataEvent à RTMP pour les métadonnées personnaliséesUpdated to add OnUserDataEvent to RTMP for custom metadata
08/01/201/08/20 Correction de l’erreur de mode RTMP simple et RTMP SCTE35.Fixed error on RTMP Simple and RTMP SCTE35 mode. La valeur « onCuePoint » a été remplacée par « onAdCue ».Changed from "onCuePoint" to "onAdCue". Tableau en mode simple mis à jour.Updated Simple mode table.

Étapes suivantesNext steps

Afficher les parcours d’apprentissage de Media Services.View Media Services learning paths.

Media Services v3 (version la plus récente)Media Services v3 (latest)

Découvrez la dernière version de Microsoft Azure Media Services !Check out the latest version of Azure Media Services!

Media Services v2 (hérité)Media Services v2 (legacy)

Fournir des commentairesProvide feedback

Utilisez le forum User Voice pour fournir des commentaires et des suggestions sur la façon d’améliorer Azure Media Services.Use the User Voice forum to provide feedback and make suggestions on how to improve Azure Media Services. Vous pouvez également accéder directement à l’une des catégories suivantes :You also can go directly to one of the following categories: