Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Official moOde 7.0.0 subthread [Plugins] (e.g. UPNP)
#21
You might need to turn off A/V services and turn on Openhome services in UPnP Config.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#22
Hi Maximiliano

You could try installing the BubbleUPnP server on your Macbook and creating an OpenHome Renderer on it. Then check the OpenHome Services in the Moode UPnP config. That may enable Kazoo to work. Are you wanting to stream Tidal by any chance?

John

Edit: You may also need to check UPnP A/V services in the Moode UPnP config.
Reply
#23
Has anybody tested upmpdcli 1.5.5 or 1.5.7 releases?
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#24
(01-11-2021, 02:09 PM)Tim Curtis Wrote: Has anybody tested upmpdcli 1.5.5 or 1.5.7 releases?

HaHaHa - as of yesterday 1.5.8 is current release Big Grin 

I'll give it a shot later today.

Regards,
Kent
Reply
#25
Ok, cool. Mainly interested in verifying that cover art works.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#26
(01-11-2021, 04:28 PM)Tim Curtis Wrote: Ok, cool. Mainly interested in verifying that cover art works.

From the release notes


Quote:2021-01-10 upmpdcli 1.5.8
  • Fix a number of memory leak and locking issues detected by valgrind/helgrind.
  • Improve performance of big playlist insert by rate-limiting events.
  • Fix possible crash when started while mpd is not running.
2020-12-30 upmpdcli 1.5.7
  • Fix timeout issue while in long pause (>60S, play transition started from other client was not detected)
  • Fix ohinfo issue resulting in no cover art display in Kazoo "currently playing" screen.
  • Fix a number of issues in radio metadata.
  • The minimum effective volume adjustment was 5. Reset it to 1.
  • Cache update issues in OH playlist resulted in incomplete metadata.
2020-12-08 upmpdcli 1.5.5
  • Fix issue with removing tracks from the playlist (sometimes slow or freezed).
  • Fix bad locking causing multiple execs of radio scripts.
  • Setting lumincompat = 1 is not useful any more and crashes some Kazoo versions. So you should keep the default value which is off.
  • Improve metadata processing when playing radios with Bubble DS.
2020-11-24 upmpdcli 1.5.2
  • Modified a few things which should not have mattered but which prevented Lumin to work with upmpdcli.
  • The Qobuz plugin works again (for now), by identifying itself as the WEB client (thanks to qobuz-dl on github). More precisely, Qobuz access through the upmpdcli Media Server works again. Qobuz access by login from Kazoo or Lumin (Open Home Credentials service) does not work.
  • Tidal does not work.
  • Fixed crash.
  • Will now generate events for bitrate changes when playing.



What is it Ferris Buehler said? Oh, yeah, "Life moves pretty fast.If you don't stop and look around once in a while, you could miss it."

Regards,
Kent
Reply
#27
@Tim Curtis 

So building the latest libnpupnp, libupnpp, and upmpdcli was uneventful.

Tracks play fine using various apps on Android phone and on Apple iPad but I'm still not seeing any album art on moOde's WebUI.

I enabled the logging function and tried again.

Very confusing trying to monitor the log. It doesn't seem to accumulate entries synchronously with track playing so tail -f doesn't work...for a while the log was empty even though tracks had been played...but eventually I was able to scrape some pertinent info.

Here, for example, I used one of the apps to select a track from my minimserver running on an X86 host. I don't know for sure that this is the start of the log entry for this track but I think so

Code:
</DIDL-Lite>:2:libupnpp/device/device.cxx:446::UpnpDevice: Action failed:  code -911
:2:src/upmpd.cxx:337::checkContentFormat: resource has no protocolinfo
:2:src/ohplaylist.cxx:751::OHPlaylist::insertUri: unsupported format: uri http://192.168.4.36:9790/minimserver/*/Music/TestTracks/Hyperion/14*20Clementi*20Piano*20Sonata*20in*20D*20major,*20Op*2025*20No*206*20-*20Movement*202*20Un*20poco*20andante.M4A metadata <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">
 <item>
   <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Clementi: Piano Sonata in D major, Op 25 No 6 - Movement 2: Un poco andante</dc:title>
   <upnp:class xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">object.item.audioItem.musicTrack</upnp:class>
   <upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.36:9790/minimserver/*/Music/TestTracks/Hyperion/14*20Clementi*20Piano*20Sonata*20in*20D*20major,*20Op*2025*20No*206*20-*20Movement*202*20Un*20poco*20andante.M4A/$!picture-18950-278222.png?connection=close</upnp:albumArtURI>
   <upnp:album xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Clementi: The Complete Piano Sonatas, Vol. 4</upnp:album>
   <upnp:artist xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Howard Shelley</upnp:artist>
   <upnp:artist xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" role="AlbumArtist">Howard Shelley</upnp:artist>
   <upnp:artist xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" role="Composer">Clementi, Muzio (1752-1832)</upnp:artist>
   <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2009-01-01</dc:date>
   <upnp:genre xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Classical</upnp:genre>
   <res sampleFrequency="44100" bitsPerSample="16" duration="0:02:46">http://192.168.4.36:9790/minimserver/*/Music/TestTracks/Hyperion/14*20Clementi*20Piano*20Sonata*20in*20D*20major,*20Op*2025*20No*206*20-*20Movement*202*20Un*20poco*20andante.M4A</res>
   <desc id="pinsUri" nameSpace="https://linn.co.uk">upnp.cd://track?udn=b626fc3b-d343-4d62-aaac-b9e4b7cec658&amp;me=b626fc3b-d343-4d62-aaac-b9e4b7cec658&amp;trackId=0$albums$*a1$*i15&amp;version=1</desc>
   <desc id="pinsMode" nameSpace="https://linn.co.uk">upnp.cd</desc>
   <desc id="pinsType" nameSpace="https://linn.co.uk">track</desc>
 </item>

In particular, note this line


Code:
<upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.36:9790/minimserver/*/Music/TestTracks/Hyperion/14*20Clementi*20Piano*20Sonata*20in*20D*20major,*20Op*2025*20No*206*20-*20Movement*202*20Un*20poco*20andante.M4A/$!picture-18950-278222.png?connection=close</upnp:albumArtURI>

If I copy the URL to my browser, up pops the correct album art and (*cough* ) the album art shows up correctly in all my UPnP apps.

I don't pretend to understand the fine points of the log entries, e.g., the "Action failed" or the "resource has no protocolinfo"---since I'm not fluent in C++ I have no hope of figuring them out by reading the source code.


Regards,
Kent
Reply
#28
And here's another example serving a track from a UniversalMediaServer running in a virtual Windows10.

Code:
:2:src/upmpd.cxx:337::checkContentFormat: resource has no protocolinfo
:2:src/ohplaylist.cxx:751::OHPlaylist::insertUri: unsupported format: uri http://192.168.4.31:5001/get/236/01.Music+with+Changing+Parts.flac_transcoded_to.mp3 metadata <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">
 <item>
   <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Music with Changing Parts</dc:title>
   <upnp:class xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">object.item.audioItem.musicTrack</upnp:class>
   <upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.31:5001/get/236/thumbnail0000JPEG_SM_01.Music+with+Changing+Parts.flac.jpg</upnp:albumArtURI>
   <upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.31:5001/get/236/thumbnail0000JPEG_TN_01.Music+with+Changing+Parts.flac.jpg</upnp:albumArtURI>
   <upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.31:5001/get/236/thumbnail0000PNG_LRG_01.Music+with+Changing+Parts.flac.png</upnp:albumArtURI>
   <upnp:albumArtURI xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">http://192.168.4.31:5001/get/236/thumbnail0000PNG_TN_01.Music+with+Changing+Parts.flac.png</upnp:albumArtURI>
   <upnp:album xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Music with Changing Parts</upnp:album>
   <upnp:artist xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Philip Glass</upnp:artist>
   <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2019-08-21T14:50:12</dc:date>
   <upnp:genre xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">Chamber Music</upnp:genre>
   <res sampleFrequency="48000" bitrate="742725" duration="1:01:39">http://192.168.4.31:5001/get/236/01.Music+with+Changing+Parts.flac_transcoded_to.mp3</res>
   <desc id="pinsUri" nameSpace="https://linn.co.uk">upnp.cd://track?udn=df72d058-3e9b-4605-a7c7-d697fc97d63f&amp;me=df72d058-3e9b-4605-a7c7-d697fc97d63f&amp;trackId=236&amp;version=1</desc>
   <desc id="pinsMode" nameSpace="https://linn.co.uk">upnp.cd</desc>
   <desc id="pinsType" nameSpace="https://linn.co.uk">track</desc>
 </item>
</DIDL-Lite>:2:libupnpp/device/device.cxx:446::UpnpDevice: Action failed:  code -911

Regards,
Kent
Reply
#29
The upexplorer utility is used in playerlib.php to fetch the URL for album art. IIRC the way to debug is to start a UPnP track playing and then from the command line run the following cmd. It should return the URL.

Code:
upexplorer --album-art <renderer>


Help
Code:
pi@rp3:~ $ upexplorer
upexplorer: usage:
-l : list devices
 -1 : loop only once (initial discovery)
 [-u] Add url to device lines
 [-U] Add UDN to device lines
-r <server> <objid> list object id (root is '0')
-s <server> <searchstring> search for string
-m <server> <objid> : list object metadata
-c <server> get search capabilities
-M <renderer>: monitor AVTransport
-v <renderer> get volume
-V <renderer> <volume> set volume
-p <renderer> 1|0 play/stop
-P <renderer>  pause
--album-art <renderer> print album art uri for playing track

<renderer> params can be either "friendly names", or UDNs
<server> params must be "friendly names"
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#30
Here is the code block in playerlib.php. Maybe some debug lines need to be added in order to verify that in fact the line $current['coverurl'] = getUpnpCoverUrl(); is being executed.

Code:
        // Song file, UPnP URL or Podcast
        else {
            $current['artist'] = isset($song['Artist']) ? $song['Artist'] : 'Unknown artist';
            $current['title'] = isset($song['Title']) ? $song['Title'] : pathinfo(basename($song['file']), PATHINFO_FILENAME);
            $current['album'] = isset($song['Album']) ? $song['Album'] : 'Unknown album';
            $current['disc'] = isset($song['Disc']) ? $song['Disc'] : 'Disc tag missing';
            if (substr($song['file'], 0, 4) == 'http') {
                // Podcast
                if (isset($_SESSION[$song['file']])) {
                    $current['coverurl'] = LOGO_ROOT_DIR . $_SESSION[$song['file']]['name'] . ".jpg";
                    $current['artist'] = 'Radio station';
                    $current['album'] = $_SESSION[$song['file']]['name'];
                }
                // UPnP file
                else {
                    $current['coverurl'] = getUpnpCoverUrl();
                }
            }
            // Song file
            else {
                $current['coverurl'] = '/coverart.php/' . rawurlencode($song['file']);
            }
            // In case 2 url's are returned, use the first
            $current['coverurl'] = explode(',', $current['coverurl'])[0];

            if (substr($song['file'], 0, 4) == 'http') {
                //workerLog('enhanceMetadata(): UPnP url');
            }
            else {
                //workerLog('enhanceMetadata(): Song file');
            }
        }
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply


Forum Jump: