Re: Streaming to DLNA devices



Hi Jens,

as we previously talked about, I modified rendererconsole.py to do my work, and I integrated discovery and player creation into SBS aka. LMS.

Then I discovered the hard way that only software renderers will accept the stream I created with MPD.... dialog goes like this; 101 is an Onkyo receiver and 113 runs MPD httpd stream that I can connect and play using exactly the same method by XBMC built-in renderer, VLC, or even from Onkyo receiver when I define it as a Internet "radio" "favourite" - but not when pushing it as UPnP stream:

1)
216    7.696159    192.168.1.101    192.168.1.113    TCP    229    57194 > 8767 [PSH, ACK] Seq=1 Ack=2 Win=5840 Len=163 TSval=177510163 TSecr=446219
8`w    D>Et@@Abeqj"?{#h

GET /mpd.mp3 HTTP/1.1
Range: bytes=0-
transferMode.dlna.org: Streaming
Host: 192.168.1.113:8767
User-Agent: Mediabolic-IMHTTP/1.8.225 UPNP/1.0 DLNADOC/1.50

2)
217    7.696195    192.168.1.113    192.168.1.101    TCP    54    8767 > 57194 [RST] Seq=2 Win=0 Len=0
D>8`wE(@@qe"?j#P`


And in response from 192.168.1.101: (extracted)
TransportStatus val="ERROR_OCCURRED"/><CurrentTransportActions
...then...
<UPnPError
  xmlns="urn:schemas-upnp-org:control-1-0"><errorCode>716</errorCode>
 <errorDescription>Resource not found</errorDescription></UPnPError>

Same dialog with Samsung TV

Long story short - does anyone know of a method of creating a UPnP compliant stream that responds in a way it should respond? I thought MPD does that as I found a patch discussed for this purpose when using FLAC, but mow looking at the code it seems to be a quick hack for a particular device ...

Please note, I'm not looking for a UPnP server - I just need to create an mp3/flac/whatever stream from available raw PCM data stream (created by SBS/MPD/some player) that can be pushed to DLNA renderer

Any help very much appreciated!

Kind regards,
Andrej


Andrej Falout
NZ: +64(21)02566825 AU: +61(45)1166010 US: +1(360)4880970 HR:+385(91)1520436


On Thu, Jan 24, 2013 at 9:19 PM, Jens Georg <mail jensge org> wrote:
On Mi, 2013-01-23 at 14:17 +1300, Andrej Falout wrote:

>         Yes. Call GetProtocolInfo on the Renderer's ConnectionManager
>         service.
>         The sink variable of the response gives you a comma-separated
>         list with
>         entries like http-get:*:audio/mpeg:DLNA.ORG_PN=MP3 or maybe a
>         * at the
>         end as well, I think dLeyna even preprocesses that for you.
>         The only
>         uncompressed format DLNA supports is raw PCM (profile LPCM),
>         but there
>         should be devices doing flac as well.
>
>
> I assume that due to 'http-get" in response this means that this
> formats are supported for streaming? I have Onkio that is advertised
> as supporting Flac, but when I bought it it turned out it is
> explicitly not supported for streaming, only for files :-(

No, http-get means both. Some devices (wrongly) assume that they can
just download it. That's the subtle difference between UPnP and DLNA,
you can't mark a stream as a stream in UPnP but you can in DLNA. It
might even be that we don't do that correctly in Rygel. Is the Onkio a
(certified) DLNA or just a UPnP-AV device?

>
>
>
> Do I need to specify http-get somehow to GetProtocolInfo or will this
> return both streaming supported formats and file supported formats?
>
>
>
> Yes, Linn does streaming Flac (which is an compressed format btw)

Ah, sorry, yes. somehow had compressed == lossy in my mind.

The only real uncompressed formats are either WAV (rather rare) or raw
PCM (16 bit big endian, signed, every certified DLNA device has to
support that) with the sample rate and channels in the content-type
(e.g. audio/L16;rate=44100;channels=2)

>         Btw, to be really foolproof, all your uris should have a file
>         extension
>         matching the file-type. Some (mainly cheap) devices rely on
>         them.
>
>
> I suppose that means http://1.2.3.4:yyy:xxx.mp3 (I used only
> http://1.2.3.4:yyy in my tests) but what should I have as xxx ?

assuming yyy is a port number, you could make it whatever you want, just
call it http://1.2.3.4:7890/stream.mp3 or such.

>
>
>
>         > 1) a command-line control point, which can push URL to
>         renderer,
>         > stop/play/pause, change volume etc....
>
>
>         Not really.
>
>
> Bummer. That would help people trying to script things .. like me :-)
> I think rendererconsole.py is about to have a surgery :-)

I think the dLeyna people would definitely like such contribution.


>         > 2) A web browser control point. I am aware of dLeyna Cloud,
>         but that
>         > is barely a prototype
>
>
>         There was something as a demo of gupnp-php, but I've no idea
>         how usable
>         that is or what it's called.
>
>
> Could not find anything other then few examples that are part of the
> gupnp-php code

Sorry, I don't remember what it was. Probably abandoned anyway.

> With all this DLNA devices all over the place, I am fascinated that so
> few people want to use them :-) If I can find an app like Ampache but
> from 21st century (eg HTML5) I might do something myself...

People tend to get frustrated easily with DLNA. I expect some HTML5
controller stuff to pop up with the rise of it as a mobile platform.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]