Debug MPEG-DASH streaming in Wowza Streaming Engine

You can use log messages to verify that the MPEG-DASH implementation in Wowza Streaming Engine™ media server software is running correctly. Configure the properties that are described in this article to record log messages to the [install-dir]/logs/wowzastreamingengine_access.log file.

Virtual host logging properties


To use the httpAdapterDebugLog property to enable HTTP Streamer Adapter (all protocols) debug logging for both VOD and live streaming:

  1. In Wowza Streaming Engine Manager, click the Server tab, and then click Virtual Host Setup.
  2. In the Virtual Host Setup page, click the Properties tab and then click Custom in the Quick Links bar.
     
    Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. In the Custom area, click Edit.
  4. Click Add Custom Property, specify the following settings in the Add Custom Property dialog box, and then click Add:
    • Path - Select /Root/VHost.
    • Name - Enter httpAdapterDebugLog.
    • Type - Select Boolean.
    • Value - Enter true.
  5. Click Save, and then restart the virtual host to apply the changes.

Setting httpAdapterDebugLog to true yields log messages similar to the following:

INFO server comment - onManifest: vod/mp4:sample.mp4/manifest_mpm4sav_mvlist.mpd
INFO server comment - onManifest: chunkId: {MPEGDashChunkId: sessionId: "", bitrate: 0, playStart: 0, playDuration: 0, vodTranscodeNGRP: "null", queryStr: "null", chunkFormat: -1, chunkType: -1, isInit: false, chunkNumber: -1, chunkNumberOffset: 0, startTimecode: -1, manifestProfile: 2, manifestId: 2, representationId: -1, mimeType: , }
INFO server comment - HTTPStreamerAdapterMPEGDashStreamer.onManifest: sessionId: 
INFO mpegdash connect 949935263 -
INFO stream create sample.mp4 -
INFO server comment - MediaReaderH264MPEGDash.indexFile[vod/_definst_/sample.mp4][mp4a.40.2]: AAC Audio info: {MediaCodecInfoAudio: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - MediaReaderH264MPEGDash.indexFile[vod/_definst_/sample.mp4][avc1.66.30]: H.264 Video info: {MediaCodecInfoVideo: codec:H264, profile:Baseline, level:3.0, frameSize:424x240, displaySize:424x240, frameRate:24.000000}
INFO server comment - HTTPStreamerMPEGDashIndex.createM4SListBasedManifest[vod/_definst_/mp4:sample.mp4]: AdpSetId:0 RepId:0 mimeType:video/mp4 codecs:avc1.42c01e bandwidth:420000 height:240 width:424 duration:596458
INFO server comment - HTTPStreamerMPEGDashIndex.createM4SListBasedManifest[vod/_definst_/mp4:sample.mp4]: AdpSetId:1 RepId:0 mimeType:audio/mp4 codecs:mp4a.40.2 bandwidth:99000 audioSamplingRate="48000" lang="eng"
INFO server comment - onMediaFile: vod/mp4:sample.mp4/chunk_ctvideo_rid0_cfm4s_cinit_w949935263_mpd.m4s
INFO server comment - onMediaFile: chunkId: {MPEGDashChunkId: sessionId: "949935263", bitrate: 0, playStart: 0, playDuration: 0, vodTranscodeNGRP: "null", queryStr: "null", chunkFormat: 0, chunkType: 1, isInit: true, chunkNumber: -1, chunkNumberOffset: 0, startTimecode: -1, manifestProfile: -1, manifestId: 0, representationId: 0, mimeType: video/mp4, }
INFO server comment - onMediaFile: vod/mp4:sample.mp4/chunk_ctaudio_rid0_cfm4s_cinit_w949935263_mpd.m4s
INFO server comment - onMediaFile: chunkId: {MPEGDashChunkId: sessionId: "949935263", bitrate: 0, playStart: 0, playDuration: 0, vodTranscodeNGRP: "null", queryStr: "null", chunkFormat: 0, chunkType: 2, isInit: true, chunkNumber: -1, chunkNumberOffset: 0, startTimecode: -1, manifestProfile: -1, manifestId: 0, representationId: 0, mimeType: audio/mp4, }
INFO server comment - MediaReaderH264MPEGDash.fillChunkFromFile[vod/_definst_/sample.mp4]: Add chunk: type:m4s_video id:-1 a/v/k:0/270/3 duration:11249
INFO stream play sample.mp4 -
INFO server comment - HTTPStreamerAdapterMPEGDashStreameronMediaFile: contentLength:682
INFO server comment - onMediaFile: vod/mp4:sample.mp4/chunk_ctvideo_rid0_cfm4s_cn1_w949935263_mpd.m4s
INFO server comment - onMediaFile: chunkId: {MPEGDashChunkId: sessionId: "949935263", bitrate: 0, playStart: 0, playDuration: 0, vodTranscodeNGRP: "null", queryStr: "null", chunkFormat: 0, chunkType: 1, isInit: false, chunkNumber: 1, chunkNumberOffset: 0, startTimecode: -1, manifestProfile: -1, manifestId: 0, representationId: 0, mimeType: video/mp4, }
INFO server comment - MediaReaderH264MPEGDash.fillChunkFromFile[vod/_definst_/sample.mp4]: Add chunk: type:m4s_audio id:-1 a/v/k:528/0/0 duration:-1
INFO server comment - HTTPStreamerAdapterMPEGDashStreameronMediaFile: contentLength:621
INFO server comment - onMediaFile: vod/mp4:sample.mp4/chunk_ctaudio_rid0_cfm4s_cn1_w949935263_mpd.m4s
INFO server comment - onMediaFile: chunkId: {MPEGDashChunkId: sessionId: "949935263", bitrate: 0, playStart: 0, playDuration: 0, vodTranscodeNGRP: "null", queryStr: "null", chunkFormat: 0, chunkType: 2, isInit: false, chunkNumber: 1, chunkNumberOffset: 0, startTimecode: -1, manifestProfile: -1, manifestId: 0, representationId: 0, mimeType: audio/mp4, }
INFO server comment - HTTPStreamerAdapterMPEGDashStreameronMediaFile: contentLength:689365
INFO stream seek sample.mp4 -
INFO server comment - HTTPStreamerAdapterMPEGDashStreameronMediaFile: contentLength:151935

You can also add the mpegdashAdapterDebugLog property to the virtual host to enable MPEG-DASH HTTP Streamer Adapter debug logging for both VOD and live streaming. Use the same steps above to create the new mpegdashAdapterDebugLog custom property with the following settings:

Path
Name
Type
Value
Notes
/Root/VHost mpegdashAdapterDebugLog Boolean true See httpAdapterDebugLog for example log messages.

Live application logging properties


Note:

Some MPEG-DASH live segmenter and logging properties were renamed in Wowza Streaming Engine 4.7.8 to conform to MPEG-DASH standard terminology. The old names appear in parentheses alongside the new names in Wowza Streaming Engine Manager. Both names are supported in the Wowza Streaming Engine REST API, however, we recommend that you use the new names, as the old names may eventually be deprecated.

Enable the mpegDashSegmentTimecodeLogging property (formerly mpegDashChunkTimecodeLogging) to help debug issues related to live DASH adaptive bitrate switching or general live DASH streaming.

  1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your live application (such as live) in the contents panel.
  2. On the live application page Properties tab, click Custom in the Quick Links bar.
     
    Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. In the Custom area, click Edit.
  4. Click Add Custom Property, specify the following settings in the Add Custom Property dialog box, and then click Add:
    • Path - Select /Root/Application/LiveStreamPacketizer.
    • Name - Enter mpegDashSegmentTimecodeLogging.
    • Type - Select Boolean.
    • Value - Enter true.
  5. Click Save, and then restart the live application to apply the changes.

Other log messages can be recorded by your live application by adding the mpegDashLiveIndexLogging or mpegDashMaxSegmentLogCount (formerly mpegDashMaxChunkLogCount) properties. Use the same steps above to create a new custom property with the following settings:

Path
Name
Type
Value
Notes
/Root/Application/LiveStreamPacketizer mpegDashLiveIndexLogging Boolean true Controls MPEG-DASH live segment indexing debug logging, which helps to debug issues related to live DASH streaming. If true, logs the list of segments that will be described in each manifest. The logged values are in units of milliseconds.
/Root/Application/LiveStreamPacketizer mpegDashMaxSegmentLogCount (formerly mpegDashMaxChunkLogCount) Integer 10 Specifies the maximum number of live MPEG-DASH stream segments that the packetizer records in the log. The default value is 10. A value of 0 results in all segments being logged.

On-demand application logging properties


The mpegdashDebugFragmentTimes property can be used to control logging of MPEG-DASH on-demand chunk information (chunk start/stop/duration) as chunks are created (on each chunk request). Both unscaled (milliseconds) and scaled (media timescale) values are logged to allow comparison to data provided in the MPD files.

Note: Support for this property is included in Wowza Streaming Engine version 4.2.1 and later.
  1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your on-demand application (such as vod) in the contents panel.
  2. On the on-demand application page Properties tab, click Custom in the Quick Links bar.
     
    Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. In the Custom area, click Edit.
  4. Click Add Custom Property, specify the following settings in the Add Custom Property dialog box, and then click Add:
    • Path - Select /Root/Application/HTTPStreamer.
    • Name - Enter mpegdashDebugFragmentTimes.
    • Type - Select Boolean.
    • Value - Enter true.
  5. Click Save, and then restart the on-demand application to apply the changes.

General application logging properties


Other log messages can be recorded by your live or vod application by adding the properties described in this section.

Notes:
  • Support for these properties is included in Wowza Streaming Engine 4.2.1 and later.
  • These properties may technically make an MPD invalid according to the MPEG-DASH specification, but none of the tested players appear to have issues with the extra attributes.
  1. In Wowza Streaming Engine Manager, click the Applications tab and then click the name of your application in the contents panel.
  2. On the application page Properties tab, click Custom in the Quick Links bar.
     
    Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
  3. In the Custom area, click Edit.
  4. Click Add Custom Property, specify the following settings in the Add Custom Property dialog box, and then click Add:
     
    Path
    Name
    Type
    Value
    Notes
    /Root/Application mpegdashIncludeUnscaledChunkTimeTags Boolean true Includes the S@t attribute (scaled chunk start time) in every <S> chunk entry in MPEG-DASH MPDs (instead of just the first entry). This helps to debug chunk start times, such as where the chunks aren't frame-aligned across all of the stream renditions in an adaptive bitrate MPEG-DASH stream.
    /Root/Application mpegdashIncludeChunkStartTimeTags Boolean true Includes custom "end", "t_unscaled", "d_unscaled", and "end_unscaled" attributes (scaled chunk end time and unscaled chunk start/duration/end times) in every <S> chunk entry in MPEG-DASH MPDs. This helps to debug chunk start times and durations, and visually compare the times provided for "companion" audio and video chunks of the same index number.
  5. Click Save, and then restart the application to apply the changes.

More resources