MPEG-DASH Video

Product(s)
Video Cloud
Role(s)
API Developer
Task(s)
Add Videos/Assets
Topic(s)
Ingest Profiles
API(s)
Ingest Profiles API

In this topic, you will learn about creating MPEG-DASH renditions for your videos.

Overview

MPEG-DASH is a segmented video format. It is particularly useful if you require DRM security for your content, because DASH can be used with Playready, Marlin, or Widevine Modular DRM. Since the syntax for specifying MPEG-DASH renditions is slightly different than that for other video formats, we include here a couple of sample profiles, one without DRM packaging and the other including DRM packaging.

Sample Profile (no DRM)

This sample shows the packaging of MPEG-DASH renditions without DRM packaging.

{
  "id": "56e077ace4b0a7b3c178e6e7",
  "name": "DASH-no-drm",
  "description": "DASH renditions",
  "account_id": "1752604059001",
  "renditions": [
    {
      "media_type": "video",
      "id": "56e077ace4b0a7b3c178e6e5",
      "reference_id": "r1",
      "format": "m4f",
      "type": "segmented",
      "audio_codec": "aac",
      "audio_bitrate": 36,
      "video_codec": "h264",
      "video_bitrate": 300,
      "decoder_bitrate_cap": 400,
      "decoder_buffer_size": 800,
      "force_aac_profile": "aac-lc",
      "frame_rate": 30,
      "keyframe_rate": 0.5,
      "fixed_keyframe_interval": true,
      "width": 800,
      "height": 600,
      "h264_profile": "baseline",
      "streaming_delivery_profile": "live"
    },
    {
      "media_type": "video",
      "id": "56e077ace4b0a7b3c178e6e6",
      "reference_id": "r2",
      "format": "m4f",
      "type": "segmented",
      "audio_codec": "aac",
      "audio_bitrate": 36,
      "video_codec": "h264",
      "video_bitrate": 600,
      "decoder_bitrate_cap": 800,
      "decoder_buffer_size": 1600,
      "frame_rate": 30,
      "keyframe_rate": 0.5,
      "fixed_keyframe_interval": true,
      "force_aac_profile": "aac-lc",
      "width": 1024,
      "height": 768,
      "h264_profile": "baseline",
      "streaming_delivery_profile": "live"
    },
    {
      "media_type": "image",
      "id": "559697ece4b072e9641b840f",
      "format": "jpg",
      "label": "poster",
      "width": 640,
      "height": 360
    },
    {
      "media_type": "image",
      "id": "559697ece4b072e9641b8410",
      "format": "jpg",
      "label": "thumbnail",
      "width": 160,
      "height": 90
    }
  ],
  "packages": [
    {
      "package_type": "dash",
      "renditions": [
        "r1"
      ]
    },
    {
      "package_type": "dash",
      "renditions": [
        "r2"
      ]
    }
  ]
}

Sample Profile (with DRM)

Here is the same sample profile with Common Encryption (CENC) and DRM packaging (Widevine and Playready) included.

{
    "account_id": 2728142649001,
    "digital_master": {
        "distribute": true,
        "rendition": "passthrough"
    },
    "name": "dash-cenc-live",
    "description": "This will produce 6 dash live renditions with cenc",
    "renditions": [
        {
            "media_type": "video",
            "reference_id": "av0",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 40,
            "video_bitrate": 110,
            "decoder_bitrate_cap": 200,
            "decoder_buffer_size": 400,
            "width": "400",
            "height": "300",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "video",
            "reference_id": "av1",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 40,
            "video_bitrate": 260,
            "decoder_bitrate_cap": 400,
            "decoder_buffer_size": 800,
            "width": "400",
            "height": "300",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "video",
            "reference_id": "av2",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 64,
            "video_bitrate": 436,
            "decoder_bitrate_cap": 600,
            "decoder_buffer_size": 1200,
            "width": "480",
            "height": "360",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "video",
            "reference_id": "av3",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 96,
            "video_bitrate": 704,
            "decoder_bitrate_cap": 800,
            "decoder_buffer_size": 1600,
            "width": "640",
            "height": "480",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "video",
            "reference_id": "av4",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 128,
            "video_bitrate": 1072,
            "decoder_bitrate_cap": 1200,
            "decoder_buffer_size": 2400,
            "width": "720",
            "height": "540",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "video",
            "reference_id": "av5",
            "format": "m4f",
            "audio_codec": "aac",
            "audio_bitrate": 128,
            "video_bitrate": 1672,
            "decoder_bitrate_cap": 2000,
            "decoder_buffer_size": 4000,
            "width": "1280",
            "height": "960",
            "fixed_keyframe_interval": true,
            "frame_rate": 30,
            "force_aac_profile": "aac-lc",
            "video_codec": "h264",
            "h264_profile": "baseline",
            "keyframe_rate": 0.5,
            "streaming_delivery_profile": "live",
            "type": "segmented"
        },
        {
            "media_type": "image",
            "format": "png",
            "label": "poster",
            "width": 640,
            "height": 480
        },
        {
            "media_type": "image",
            "format": "png",
            "label": "thumbnail",
            "width": 160,
            "height": 90
        }
    ],
    "packages": [
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av0"
]
        },
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av1"
]
        },
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av2"
]
        },
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av3"
]
        },
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av4"
]
        },
        {
"drm": [
    "playready",
    "widevine"
],
"package_type": "dash",
"renditions": [
    "av5"
]
        }
    ]
}

Silverlight security

On certain platforms, the Brightcove Player uses a Silverlight fallback to play MPEG-DASH renditions. For security reasons, Silverlight requires that a clientaccesspolicy.xml file be present in the document root of the server from which DASH content is served. See this Microsoft article for more details.

Here is a sample clientaccesspolicy.xml file:

Known issues

  • The Default (Auto Display) caption setting in the Media module's TEXT TRACK section is not supported when used in conjunction with DASH and in-manifest captions. In-manifest captions are used with the Brightcove products Dynamic Delivery and SSAI, for example. A workaround for this issue is to use the <track> tag with the Advanced Brightcove Player implementation. This is detailed in the Adding Captions to Videos Programmatically document. Note you must use the default attribute with the <track> tag.