Quantcast
Jump to content



  • Own an LG TV or webOS device? Join our Forum!

    Register now to gain access to our webOS user support forum. Once registered and logged in, you will be able to post a user to user support request topic to this site or reply to existing topics posted by other users. You can also take part in our other webOS user forums. You'll be able to customize your profile, receive reputation points, while also communicating with other members via your own private inbox, plus much more!

  • 0
palswim

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?

Share this post


Link to post
Share on other sites

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

Share this post


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 GJC
      I would like to be able to access my network drives without using DLNA.  It should look just like a USB drive.
    • By dankoj
      Is there an LG WebOS-TV App that allows the simple play of a video file from an SMB (Windows) share. DNLA is very inconvenient, and there are no user access rights.
      I want to browse shared folders (from my NAS), select a video file, click, watch, and then delete it.
    • By Bogan Silver
      Hi
      I am trying to stream and display my favorite song collections on a smart TV, all failed. I had previously used samsung s3 to connect via bluetooth, but when i used iphone x to connect, the system reported an incompatible error. Can someone tell me why the connection was not successful? Here are the songs I want to play on my TV: 
      link hidden, please login to view
      Thanks in advance  
    • By kazimates
      I setup LG 32LJ570U-TA on my office. I record some news or tv channels from satellite on LG TV to usb. But the file extension is not showing to us on computer and I can't play this recorded videos on my pc. How can I play edit or convert this videos of LG TV recorded on my pc?
       
    • By Soloman
      LG 55SM8050PLC (2020)
      I added a programme to the favourites list and since then the TV continually flashes between a programme and the 'Live TV' symbol shown in the Home display.
      No input from the remote control is accepted, the flashing continues.
      Tried turning the power off and restarting, no change.
      Turning TV off and on, bo change.
      Leaving it off or on, no change.
       


×
×
  • Create New...