0

We're using WMPLib as an embedded player in our C# application but this issue occurs also in Windows Media Player.

Our server streams audio and has streaming with offset enabled. Given URL:

http://ourserver.com/playback?id=400

which returns an octet or x-wave stream (both does not work).

The WMP starts buffering and playing the 2 mins long wave file from given URL (everything works fine) but when I grab and drop the track slider to something about 90% of its length, the playback is cut off and WMP displays general audio error (c00d11b1). When I drop the slider closer (10-20% further) the playback continues without any errors and is played with offset properly. I'm using Windows 7 Home Premium 64 bit.

When I'm using the same URL in other media player applications (VLC), no error occurs.

What causes such issue?

TCP packets from this situation:

WMP=>Server - get the wave

GET http://ourserver.com/playback?id=400
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: getIfoFileURI.dlna.org
Accept: */*
Cookie: PHPSESSID=7e5156ec44280a9210570158c5d31475
User-Agent: NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG: 1
Host: 192.168.0.5

Server=>WMP - return file

HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Content-Description: File Transfer
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-Dis; filename="sound.wav"
Content-Length: 833658
Accept-Ranges: bytes
Date: Tue, 02 Apr 2013 10:46:01 GMT
Server: lighttpd/1.4.28

The sound is played, we move the slider... WMP=>Server - get the sound with offset (set in range)

GET http://ourserver.com/playback?id=400
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: getIfoFileURI.dlna.org
Accept: */*
Cookie: PHPSESSID=7e5156ec44280a9210570158c5d31475
Range: bytes=733184-833657
User-Agent: NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG: 1
Host: 192.168.0.5

Server=>WMP - returns sound

HTTP/1.1 206 Partial Content
X-Powered-By: PHP/5.3.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Content-Range: bytes 733184-833657/
Cache-Control: no-cache
Pragma: no-cache
Content-Description: File Transfer
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-Dis; filename="sound.wav"
Content-Length: 833658
Accept-Ranges: bytes
Date: Tue, 02 Apr 2013 10:46:10 GMT
Server: lighttpd/1.4.28

The stream continues but WMP cuts off playback and shows error.

How can we fix this? Thanks for any help.

gawi
  • 3
  • 3

1 Answers1

0

As you can see in the second response, the server is responding with the full octect stream from the beginning. Assuming you have control at a low enough level on server side, your server must use Range: bytes=733184-833657 http header sended by the client to read this range of bytes from soud.wav and send it to the client.

I'm not sure about http response headers needed but as a clue: it's the same behaviour of resume a http download.

Here you can see server side C# code building a Content-Range response.

Here you can see PHP code building response.

Community
  • 1
  • 1
jlvaquero
  • 8,571
  • 1
  • 29
  • 45