Post Fri May 18, 2012 7:41 pm

Internet radio and BD390 (LG)

I've got a strange problem with my BD390. All over I'm happy with it, but there's one thing I'm missing. The possibility to listen to internet radio broadcasts.
I was very happy to see that with Serviio I could do this kind of things. I tried Serviio immediately and, as you may guess, it did not work. I mean it works without any problems with my Samsung TV, but not with BD390.
Using Playstation 3 profile I can stream everything saved LOCALLY (i.e. on my HDD); flac and ogg with transcoding to lpcm, mp3 (which BD390 supports natively) without and with transcoding to lpcm.
The problem appears when I try to stream an internet radio. No matter if I transcode it or not, I see such message in logs:

2012-05-16 20:22:52,328 DEBUG [OnlineRepositoryDAOImpl] Retrieving list of [FEED, WEB_RESOURCE] OnlineRepositories for AUDIO
2012-05-16 20:22:52,328 DEBUG [OnlineRepositoryDAOImpl] Retrieving list of [LIVE_STREAM] OnlineRepositories for AUDIO
2012-05-16 20:22:52,328 DEBUG [ServiceControlRequestHandler] Returning OK SOAP message
2012-05-16 20:22:55,859 DEBUG [WebServer] Incoming connection from /192.168.1.140:49472
2012-05-16 20:22:55,859 DEBUG [ResourceTransportRequestHandler] GET /resource/1000000000030001/MEDIA_ITEM/MP3*0 HTTP/1.1, headers = [Range: bytes=0-4095,Host: 192.168.1.102:8895,Accept: */*]]
2012-05-16 20:22:55,859 DEBUG [RendererDAOImpl] Reading a Renderer with ip address 192.168.1.140
2012-05-16 20:22:55,859 DEBUG [ResourceTransportRequestHandler] Resource request accepted. Using client 'IPAddress=/192.168.1.140, Profile=Playstation 3'
2012-05-16 20:22:55,859 DEBUG [ResourceTransportRequestHandler] Request for resource 1000000000030001 and type 'MEDIA_ITEM' received
2012-05-16 20:22:55,859 DEBUG [MediaResourceRetrievalStrategy] Getting information about media item 1000000000030001 (online)
2012-05-16 20:22:55,859 DEBUG [OnlineRepositoryDAOImpl] Reading an OnlineRepository (id = 3)
2012-05-16 20:22:55,859 DEBUG [AudioDeliveryEngine] Delivering item '1000000000030001' for client 'IPAddress=/192.168.1.140, Profile=Playstation 3'
2012-05-16 20:22:55,859 DEBUG [AudioDeliveryEngine] Delivering file 'http://88.191.102.69:8000/' in native format
2012-05-16 20:22:55,859 DEBUG [ResourceTransportRequestHandler] Unsupported range request, sending back 406
2012-05-16 20:22:55,859 DEBUG [ResourceTransportRequestHandler] HTTP/1.1 406 Not Acceptable, headers = [[Content-Type: audio/mpeg]]

I'm aware of this (similar) topic: viewtopic.php?f=7&t=5239 but the explanation given by zip doesn't really explain anything.
Zip says: "OK, it's asking for a byte range which Serviio specifically says it doesn't support for this file.". If so, why local files plays perfectly well even that the request is exactly the same:

BD390 local MP3
[ResourceTransportRequestHandler] GET /resource/2221/MEDIA_ITEM/MP3*0 HTTP/1.1, headers = [Range: bytes=0-51199,Host: 192.168.1.102:8895,Accept: */*]] - Plays fine

BD390 local OGG (transcoded)
[ResourceTransportRequestHandler] GET /resource/2222/MEDIA_ITEM/LPCM16_48_STEREO*0 HTTP/1.1, headers = [Range: bytes=0-4095,Host: 192.168.1.102:8895,Accept: */*]] - Plays fine

I did also some research on how Samsung request such files:

Samsung TV - internet radio
[ResourceTransportRequestHandler] GET /resource/1000000000030001/MEDIA_ITEM/MP3*0 HTTP/1.0, headers = [getcontentFeatures.dlna.org: 1,transferMode.dlna.org: Streaming,getMediaInfo.sec: 1,Host: 192.168.1.102:8895]]

IMHO it seems that the offending header is Range, which Serviio can not provide for online (internet) streams.

I'd be happy to help to solve this issue.

Edit:

Yesterday I did some experiments with WMS (Wild Media Server). It serves internet streams to BD390 without any problems. And I have noticed two things.
1. When I press play on BD390, WMS immediately reports a 3 hour long stream. This the default length which can be set-up in WMS options.
2. After a small pause (1-2 sec) player shows real length of the stream.

Conclusion.
Maybe the "Range issue" comes from the fact that Serviio is asked to serve non-yet-existing stream and introducing a small pause between first GET request and ResourceTransportRequestHandler response would help?

Regards