How to debug MPEG-DASH streaming in Wowza Streaming Engine

You can use log messages to verify that the MPEG-DASH implementation in Wowza Streaming Engine 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.

Contents


Virtual host logging properties
Live application logging properties
On-demand application logging properties
General application logging properties
More resources

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


The mpegDashChunkTimecodeLogging property can be used to help debug issues related to live DASH adaptive bitrate switching or general live DASH streaming. To enable MPEG-DASH live chunk timecode debug logging:

  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 mpegDashChunkTimecodeLogging.
    • 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 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 chunk indexing debug logging, which helps to debug issues related to live DASH streaming by logging the list of chunks that will be described in each manifest. The logged values are in units of milliseconds.
/Root/Application/LiveStreamPacketizer mpegDashMaxChunkLogCount Integer 10 Specifies the maximum number of live MPEG-DASH chunks (per stream) that a stream's MPEG-DASH LiveStreamPacketizer will record in the log. The default value is 10. A value of 0 results in all chunks 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


How to stream over MPEG-DASH

If you're having problems or want to discuss this article, post in our forum.