DASH-IF Logo

Conversion of Live Services to VoD

Living Document,

This version:
https://dashif.org/Guidelines/live2vod
Issue Tracking:
GitHub
Editor:
DASH Industry Forum
Contributors:
Thomas Stockhammer, Rufael Mekuria
Key Words:
VoD, Live
Related Features:
Live

1. Conversion of Live Services to VoD

1.1. Introduction

This feature description is an update to DASH-IF IOP Guidelines v4.3 [IOP43], clause 4.6. It obsoletes clause 4.6 of DASH-IF IOP Guidelines v4.3 [IOP43].

1.2. Scenarios and Motivation

1.2.1. Common aspects

A common scenario for DASH distribution is that a live distributed content is also made available On-Demand. Different use cases exist and are discussed in the following. Common to the different use cases presented are the following aspects when converting a live service to VoD:

In all cases, the VoD asset is defined by a time window of the live presentation, whereby each, the start time and end time are defined by a Period in the MPD and a media time within the Period. Specifically,

The figure below provides an overview of the scenarios.

Different Live to VoD Scenarios

1.2.2. Scheduled and Bounded Live Service transitioned to VoD

A first scenario for Live Content being converted to VOD is the case that a scheduled live event starting at a known date and time is also made available for On-Demand offering after the live program is completed. This case is well-known from sports events, for example football matches (for which the duration can be relatively easily predicted) or tennis matches (for which the duration may be quite arbitrary).

1.2.3. Extracting a time period from continuous live

In the second scenario, the content is extracted from a longer, e.g. 24/7 stream, at the beginning, the end, or in between. This allows that the content is offered in a recorded fashion to users. The On-demand content again is defined by a start and an end time in the live content.

1.2.4. Transition between Live and On-Demand

In an extension of the first scenario, the live service may be converted to a VOD service in a seamless manner. To allows this, the service is provided in live and on-demand concurrently in a transition phase. Assume towards the end of a live service, the content and service remains on the portal, but the clients are no longer experience the joining of the live service at the live edge, but the On-Demand service from the start while using the same MPD URL.

1.3. Content Offering Requirements and Recommendations

1.3.1. Common aspects

A live service is offered with an MPD, where for the MPD the MPD@type is set to dynamic. In addition, the MPD may be updated by having the MPD@minimumUpdatePeriod present. The live service may use different types of profiles, including multi-Period content, number-based or time-based templating, as well using @duration or Segment Timeline based segment duration signaling. The live service may include events in the MPD and/or Inband Event Streams. Segments get available over time, whereby the latest segment availability start time can be determined by information in the MPD as the sum of the MPD@availabilityStartTime, the start of the Period provided in PeriodStart as defined in [DASH], clause 5.3.2.

In order to provide live content as On-Demand, the following is recommended:

Specifically on the timing signaling of the Periods in the VoD offering,

1.3.2. Scheduled and Bounded Live Service transitioned to VoD

In the specific scenario for a scheduled service, for which the start and end times of the live and VOD service coincide, it is recommended that for the live service, the MPD@availabilityStartTime is set as the availability time of the initial Period, and the Period@start of the first Period of the live service is set to 0.

If this is the case, the operations documented in the common aspects in clause § 1.3.1 Common aspects are significantly simplified and no changes to period timing are needed. The only modifications to the MPD are as follows:

Note that these changes may happen all at the same time, or the first two may be applied first and the second change only in yet another update.

1.3.3. Extracting a time period from continuous live

In the scenario, for which a part from the live service is extracted and made available as On-Demand content, all recommendations from the common aspects in clause § 1.3.1 Common aspects apply.

1.3.4. Transition between Live and On-Demand

In the case of transitioning the services, the content offering should take into account the following guidelines.

Generally, in particular in 24/7 live service, or if the VOD service starts before the live service ends, it is discouraged that the the same MPD URL is used for live and on-demand content. It is preferred to create a new MPD URL for the on-demand content to not confuse clients when transitioning from live to on-demand MPD. Note that the same Segments with the same Segment URLs may and should be shared across live and VOD MPD.

However, there are relevant use cases to support a transition from live to on-demand content at the end of a live service and re-using the existing MPD URL, in particular when the live service follows the specific restrictions in section § 1.3.2 Scheduled and Bounded Live Service transitioned to VoD.

In this transitioning phase when the live service comes to an end, as a first action, once the URL and publish time of the last Segment is known for the live service, and the duration of the service is known as well, the live MPD should be changed as defined in clause 4.4.3.1 of [IOP43],, i.e.,

This action is the normal action when terminating a live service.

In this case and at this time, all Segments URLs are known and clients playing the live service can complete the playback of the service until the end without updating the MPD. However, some clients may also use the timeshift buffer to go back to earlier media times, or play the live service with some delay. The beneficial aspect of the action above, i.e. removing the the attribute MPD@minimumUpdatePeriod is that the DASH clients are expected to stop updating the MPD for operational reasons.

However, clients joining the service for the first time seeing the above MPD will see the type dynamic and will attempt to access the live edge, but no content is available as the live edge, as this is past the scheduled presentation. For this case, the client is expected to provide an indication to the user that it joined at the end of the media presentation, for example by playing the last few video frames of the last segment. However, such user experience to join terminated services is less preferred.

In order for clients to join at the start of the live service, the MPD@type needs to change from dynamic to static. While this change may confuse clients that update the MPD, as long as this action happens only at a time when clients no longer update the MPD, it will not create issues. For clients that play back, MPD updates are expected to not happen anymore after the MPD change from @minimumUpdatePeriod to @mediaPresentationDuration has been done, with some grace period. The grace period can be estimated as the value of @minimumUpdatePeriod plus the value of the @maxSegmentDuration. After this time, it is expected that only clients would update the MPD that have paused playback of live, and have not implemented MPD updates in pause state.

Hence, it is recommended that in the general case, service providers are permitted to change the MPD and replace the @type to be static and apply all of the modifications as documented in section § 1.3.1 Common aspects.

In the specific service offering above for which the MPD@availabilityStartTime is set to a value that is aligned with the start of the live presentation, and for which the Period@start of the first Period is set to 0, none of the Period modifications described in section § 1.3.1 Common aspects need to be done and the MPD can be used as is. In this case, the change from type dynamic to static may happen even earlier.

1.4. Client Behavior

For a DASH client, there is basically no difference on whether the content was generated from a live service or the content is provided as On-Demand. However, there are some aspects that may be “left-overs” from a live service distribution that a DASH client should be aware of:

DASH clients should support the transition from MPD@type being dynamic to static in the case when the @minimumUpdatePeriod is no longer present in the MPD, as long as the Period structure is not changed.

1.5. Examples

In the following, three published MPDs are provided.

The first one is a live MPD and is open-ended.

<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="urn:mpeg:dash:schema:mpd:2011" 
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
type="dynamic" minimumUpdatePeriod="PT10S" 
timeShiftBufferDepth="PT600S" 
minBufferTime="PT2S" 
profiles="urn:mpeg:dash:profile:isoff-main:2011"
publishTime="2024-12-10T17:17:05Z" 
availabilityStartTime="2024-12-10T16:17:05Z">
  <Period id="1" start="PT0S">
   <BaseURL> http://example.com/1/</BaseURL> 
<SegmentTemplate media="./$RepresentationID$/$Number$.m4s" initialization="$RepresentationID$-init.mp4"/>
    <!-- Video -->
    <AdaptationSet id="1" mimeType="video/mp4" codecs="hev1.A1.80.L93.B0" segmentAlignment="true" startWithSAP="1">
      <SegmentTemplate timescale="25" duration="25"/>
      <Representation id="v2048" bandwidth="2048000"/>
      <Representation id="v1024" bandwidth="1024000"/>
      <Representation id="v512" bandwidth="512000"/>
      <Representation id="v128" bandwidth="128000"/>
    </AdaptationSet>
    <!-- Audio -->
    <AdaptationSet id="2" mimeType="audio/mp4" codecs="mp4a.40.2" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true">
      <SegmentTemplate timescale="20" duration="20"/>
      <Representation id="a128" bandwidth="128000"/>
    <Representation id="a64" bandwidth="64000"/>
    </AdaptationSet>
  </Period>
</MPD>

At the time when the duration of the Media Presentation is known, the MPD@mediaPresentationDuration is added giving indication that the live presentation will terminate.

<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="urn:mpeg:dash:schema:mpd:2011" 
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
type="dynamic" mediaPresentationDuration="PT3600S" 
timeShiftBufferDepth="PT600S" 
minBufferTime="PT2S" 
profiles="urn:mpeg:dash:profile:isoff-main:2011"
publishTime="2014-10-17T17:17:07Z" 
availabilityStartTime="2024-12-10T16:17:05Z">
  <Period id="1" start="PT0S">
   <BaseURL> http://example.com/1/</BaseURL> 
<SegmentTemplate media="./$RepresentationID$/$Number$.m4s" initialization="$RepresentationID$-init.mp4"/>
    <!-- Video -->
    <AdaptationSet id="1" mimeType="video/mp4" codecs="hev1.A1.80.L93.B0" segmentAlignment="true" startWithSAP="1">
      <SegmentTemplate timescale="25" duration="25"/>
      <Representation id="v2048" bandwidth="2048000"/>
      <Representation id="v1024" bandwidth="1024000"/>
      <Representation id="v512" bandwidth="512000"/>
      <Representation id="v128" bandwidth="128000"/>
    </AdaptationSet>
    <!-- Audio -->
    <AdaptationSet id="2" mimeType="audio/mp4" codecs="mp4a.40.2" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true">
      <SegmentTemplate timescale="20" duration="20"/>
      <Representation id="a128" bandwidth="128000"/>
    <Representation id="a64" bandwidth="64000"/>
    </AdaptationSet>
  </Period>
</MPD>
<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="urn:mpeg:dash:schema:mpd:2011" 
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
type="static" mediaPresentationDuration="PT3600S" 
minBufferTime="PT2S" 
profiles="urn:mpeg:dash:profile:isoff-main:2011"
publishTime="2024-12-10T17:17:10Z" 
availabilityStartTime="2024-12-10T16:17:05Z">
  <Period id="1" start="PT0S">
   <BaseURL> http://example.com/1/</BaseURL> 
<SegmentTemplate media="./$RepresentationID$/$Number$.m4s" initialization="$RepresentationID$-init.mp4"/>
    <!-- Video -->
    <AdaptationSet id="1" mimeType="video/mp4" codecs="hev1.A1.80.L93.B0" segmentAlignment="true" startWithSAP="1">
      <SegmentTemplate timescale="25" duration="25"/>
      <Representation id="v2048" bandwidth="2048000"/>
      <Representation id="v1024" bandwidth="1024000"/>
      <Representation id="v512" bandwidth="512000"/>
      <Representation id="v128" bandwidth="128000"/>
    </AdaptationSet>
    <!-- Audio -->
    <AdaptationSet id="2" mimeType="audio/mp4" codecs="mp4a.40.2" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true">
      <SegmentTemplate timescale="20" duration="20"/>
      <Representation id="a128" bandwidth="128000"/>
    <Representation id="a64" bandwidth="64000"/>
    </AdaptationSet>
  </Period>
</MPD>

1.6. Reference Tools

NOTE: provide status for the following functionalities

1.7. Additional Information

References

Normative References

[DASH]
Information technology — Dynamic adaptive streaming over HTTP (DASH) — Part 1: Media presentation description and segment formats. Under development. URL: https://www.iso.org/standard/89027.html
[IOP43]
Guidelines for Implementation: DASH-IF Interoperability Points. URL: https://dash-industry-forum.github.io/docs/DASH-IF-IOP-v4.3.pdf
[IOP5-PART5]
DASH-IF-IOP-Part5-v5.0.0: Ad Insertion. URL: https://dashif.org/guidelines/iop-v5#part-5-ad-insertion