Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
kevleyski
Level 7

DASH malformed data

I need a little help to debug an MPEG-DASH stream

When I play the following URL using the RAF Stream player (http://devtools.web.roku.com/stream_tester/html/[/url:2ncjjmpv])

https://streams.switchmedia.asia/splita ... period.mpd

I'm presented with a dialog suggesting "Video PlayBack Error: malformed data"
(modifying simple-videoplayer-channel example github I can also see it's errorCode -5 - and there is a secondary state change error "The format is not supported or the media is corrupt.")

Could I please get some guidance on methods to obtain more information on why Roku player flags it to be malformed, when Shaka and DASH.IF, sand DASH.IF Conformance tests do not. e.g. Google's Shaka player will play it happily: https://shaka-player-demo.appspot.com/d ... uncompiled

(original signal period stream also ok on Roku 3)
https://streams.switchmedia.asia/splita/dash/RokuTest/singleperiod.mpd

If there is further documentation about what is and is not supported with respect to MPEG-DASH features such as multi-period, x-links, DRM, this is all useful to me.


Thanks,

Kevin @ Switch Media Australia
0 Kudos
5 Replies
Roku Employee
Roku Employee

Re: DASH malformed data

Two URLs above play fine for me via Stream Tester on a 4620x @ 8.0.1
What's your player model# and firmware#?
0 Kudos
kevleyski
Level 7

Re: DASH malformed data

Roku3 firmware 8.0.0 (build 4143) = most current available update

For me, the stream stops after the second period, both streams from viewers perspective should both play until the timecode at the top reaches one minute

I had an earlier issue that was ‘malformed’ after some experimenting I notice that this error is flagged when the audio adaptation set was removed (still valid DASH but it seems not on the Roku3)

So what I need info about from Roku is what is it about the middle period it's not liking? For example, if I remove that middle period thigs seem better: https://streams.switchmedia.asia/splita/dash/RokuTest/twoperiods.mpd
0 Kudos
kevleyski
Level 7

Re: DASH malformed data

I've moved to a newer box 4700TL with version 8.0.6 - build 73

The test stream plays to end of period 2 then the state changes to 'finished' using the remote if I quickly press fast-forward immediately followed by play on the remote it continues ok.
 
Any thoughts from Roku as to how I might be able to debug the MPEG-DASH stream at why it gets flagged as finished would be appreciated (DASH-IF reference and Shaka both play the stream without stopping)
0 Kudos
Roku Employee
Roku Employee

Re: DASH malformed data

Try opening a ticket on this with partnerSuccess at roku.com. This is not an area i know, nor was i able to find out by quick lookup.
0 Kudos
norcaljohnny
Level 7

Re: DASH malformed data

Running them through curl with option -I i had got difference response headers from the problematic link. So I would say there must be some network routing issue that is sending different response headers from Switchmedia. Out of 3 tries it fails once and works twice. I will post the results below. The odd thing is when it fails it still gave a 200 response code. Also, look how on the failed version it has duplicate Cache-Control values, content-type as text opposed to dash+xml and the location shows as localhost.

Failure response as follows.

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color: #ffffff} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color: #ffffff; min-height: 16.0px} span.s1 {font-variant-ligatures: no-common-ligatures} 
HTTP/1.1 200 OK
Date: Thu, 08 Mar 2018 04:19:24 GMT
Content-Type: text/html
Content-Length: 208
Connection: keep-alive
Last-Modified: Mon, 08 Jan 2018 04:05:11 GMT
ETag: "5a52edf7-d0"
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin, User-Agent,X-Requested-With
Cache-Control: max-age=18000
Cache-Control: max-age=18000
Accept-Ranges: bytes

curl: (6) Could not resolve host: ..
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 08 Mar 2018 04:19:34 GMT
Content-Type: text/html
Connection: close
Location: http://localhost
Expires: Thu, 08 Mar 2018 04:19:33 GMT
Cache-Control: no-cache


And here is the working one.

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color: #ffffff} span.s1 {font-variant-ligatures: no-common-ligatures} 
HTTP/1.1 200 OK
Date: Thu, 08 Mar 2018 04:22:43 GMT
Content-Type: application/dash+xml
Content-Length: 22527
Connection: keep-alive
Last-Modified: Wed, 07 Mar 2018 22:27:16 GMT
ETag: "5aa06744-57ff"
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin, User-Agent,X-Requested-With
Cache-Control: max-age=1
Accept-Ranges: bytes
0 Kudos