Quantcast
Jump to content


  • 0

LG SmartShare cannot handle multiple UPnP/DLNA streams


Question

I discovered that my LG SmartShare app could not play FLAC or M4A audio files natively from my DLNA server, so I decided to enable transcoding on the server to present MP3/WAV resources in addition to the native stream. However, the SmartShare app still doesn't display those files when browsing for audio, and I am trying to determine why.

And now, the extreme technical detail:

I have a shell utility, upnp-browse.sh to make HTTP calls to my DLNA server, emulating the types of calls that LG SmartShare would make:

#!/bin/sh

curl -s -d @- -H 'Content-Type: text/xml; charset="utf-8"' -H 'SOAPAction: #Browse' http://host/path/to/DLNA \
	| xmllint --xpath '////Result/text()' - \
	| recode html..utf8 \
	| xml_pp

The curl call makes a HTTP POST request with the data from stdin, which would have similar content to the following:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<s:Body>
		<u:Browse xmlns:u="urn:schemas-upnp-org:service:serviceType:v">
			<ObjectID>ID_PARENT</ObjectID>
			<BrowseFlag>BrowseDirectChildren</BrowseFlag>
		</u:Browse>
	</s:Body>
</s:Envelope>

The call to curl then yields an XML Response similar to the following:

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result><DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/">
<item id="ID_FILE" parentID="ID_PARENT" restricted="1"><dc:title>Title</dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><dc:creator>Creator</dc:creator><upnp:artist>Artist</upnp:artist><res size="######" duration="H:MM:SS.###" bitrate="1022868" sampleFrequency="44100" nrAudioChannels="2" protocolInfo="http-get:*:audio/x-flac:*">http://IP:port/MediaItems/####.ext</res><res duration="H:MM:SS.###" bitrate="176400" sampleFrequency="44100" nrAudioChannels="2" protocolInfo="http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://IP:port/MediaItems/TranscodeAudio/LPCM/####.ext</res><res duration="H:MM:SS.###" nrAudioChannels="2" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://IP:port/MediaItems/TranscodeAudio/MP3/####.ext</res></item><container id="ID_FOLDER" parentID="ID_PARENT" restricted="1" searchable="1" childCount="#"><dc:title>folder name</dc:title><upnp:class>object.container.storageFolder</upnp:class><upnp:storageUsed>-1</upnp:storageUsed></container></DIDL-Lite></Result>
<NumberReturned>2</NumberReturned>
<TotalMatches>2</TotalMatches>
<UpdateID>3</UpdateID></u:BrowseResponse></s:Body></s:Envelope>

Then the calls to xmllint, recode, and xml_pp take this data and extract the data from the Result node and format it for readability, yielding an output similar to:

<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
  <item id="ID_FILE" parentID="ID_PARENT" restricted="1">
    <dc:title>Title</dc:title>
    <upnp:class>object.item.audioItem.musicTrack</upnp:class>
    <dc:creator>Creator</dc:creator>
    <upnp:artist>Artist</upnp:artist>
    <res bitrate="1022868" duration="H:MM:SS.###" nrAudioChannels="2" protocolInfo="http-get:*:audio/x-flac:*" sampleFrequency="44100" size="######">http://IP:port/MediaItems/####.ext</res>
    <res bitrate="176400" duration="H:MM:SS.###" nrAudioChannels="2" protocolInfo="http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01500000000000000000000000000000" sampleFrequency="44100">http://IP:port/MediaItems/TranscodeAudio/LPCM/####.ext</res>
    <res duration="H:MM:SS.###" nrAudioChannels="2" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://IP:port/MediaItems/TranscodeAudio/MP3/####.ext</res>
  </item>
  <container childCount="#" id="ID_FOLDER" parentID="ID_PARENT" restricted="1" searchable="1">
    <dc:title>folder name</dc:title>
    <upnp:class>object.container.storageFolder</upnp:class>
    <upnp:storageUsed>-1</upnp:storageUsed>
  </container>
</DIDL-Lite>

Note with the sample file (item node), it contains three res nodes. The DLNA client (LG SmartShare) should select the data from the res node for the format it supports, and allow for selection of the item, but when I browse in the container which contains the item, LG SmartShare doesn't show it.

For native MP3 files, SmartShare will show and play those items. I can provide output for native MP3 items, as well as OGG or MP4/M4A files if those would help, though they all look fairly similar. However, for native MP3 files, the first res node has a slightly different set of DLNA flags:

<res bitrate="128000" duration="H:MM:SS.###" nrAudioChannels="2" protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" sampleFrequency="44100" size="######">http://IP:port/MediaItems/####.mp3</res>

Is my server serving something incorrectly, does SmartShare just not support multiple res nodes, or have I overlooked something?

Link to post
Share on other sites
  • Answers 1
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

1 answer to this question

Recommended Posts

  • 0

@palswim Interesting and neat (but very technical) thing to do! ūüėä

I assume you are using the latest Smartshare (33).2.3.1511.1201 ?  I always found it very clunky and "old fashioned", and as it has not been updated for over 2 years, I suspect it has bugs, and has fallen behind modern techiques and codec standards and stream processing methods.

I noticed on the same LG download site when checking the versions, there is mention of a "plex TV" app or "Plex Media Server", but I am unsure if this is suitable for your needs, or compatible with your DLNA  setup? See

link hidden, please login to view

By the way, did you check that all of your  DLNA devices have the latest firmware, and software stacks running on them?

Edited by td47
typo
Link to post
Share on other sites


Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Topics

    • By Jjufyu23
      Hi,
      I'd like to easily stream/cast some movie files (.mkv, .mp4 etc...) on my Ubuntu 21.04 PC to a LG Smart TV having WebOS 4.9.x.
      Both TV and PC are connected on the same LAN network via ethernet cable!
      My router does not provide any UPnP feature!
      I tried to use (with no success):
      - Kodi - enabled UPnP/DLNA and shared my library, then right clicked on a movie and ran "Play using", selected "TV" but I was not able to see anything on my LG TV (i went to Movies and Photos and did not see any remote device or other stuff) (does this method nroamlly work? Maybe there is something wrong with my Kodi / Router configuration? What screen do I have to access on the LG TV to see the DLNA devices?)
      - Integrated Ubuntu "Media Sharing" (see https://ubuntuhandbook.org/index.php/2020/04/home-media-server-ubuntu-2004/) - same as above, I could not see any device from the TV when this option is enabled
      - VLC UPnP feature - same as above
      What options do I have, without buying any additional device like Chromecast, Raspberry PI etc...?
    • By Jonos1
      Anyone have a problem with this app running on LG 4K TV?
      iPlayer app constantly buffers or locks up
      I switch to NOW TV box (not app) & can watch  iPlayer without an issue.
      Also NETFLIX & other catch up apps  work without any buffering or locking.
      Interested to hear your thoughts....
       
       
    • By MichaŇā Jurczuk
      Is there any music app like Spotify, Tidal, Google Music, anything? How can I stream for example from my phone?
    • By Sprao√≠
      Recently bought an LG Smart TV in Ireland. 43Nano796NE .
       
      There is a button on the remote for Google assistant. Nothing happens when it is pressed. I downloaded the ThinQ app and have paired it to the TV and Google home assistant. I can turn on off the TV via Google and at best turn on Netflix via Google . Just wondering am I missing something else here given the button on the remote doesn't do anything? There is  also a buttonn for opening up Disney plus and that doesn't open up the app. The app button for Netflix and Prime does work. Maybe a first world problem only. Apps for Ireland are not great, would love to be able to download Virgin media player and All Four.
    • By Jane McCoy
      the app will restart to free memory. why? how do I fix this?







×
×
  • Create New...