01-10-2021, 09:15 PM
01-10-2021, 09:56 PM
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.
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.
01-11-2021, 02:09 PM
Has anybody tested upmpdcli 1.5.5 or 1.5.7 releases?
01-11-2021, 03:52 PM
(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
I'll give it a shot later today.
Regards,
Kent
01-11-2021, 04:28 PM
Ok, cool. Mainly interested in verifying that cover art works.
01-11-2021, 04:49 PM
(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.82020-12-30 upmpdcli 1.5.7
- 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-08 upmpdcli 1.5.5
- 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-11-24 upmpdcli 1.5.2
- 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.
- 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
01-11-2021, 08:22 PM
@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
In particular, note this line
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
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&me=b626fc3b-d343-4d62-aaac-b9e4b7cec658&trackId=0$albums$*a1$*i15&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
01-11-2021, 08:28 PM
And here's another example serving a track from a UniversalMediaServer running in a virtual Windows10.
Regards,
Kent
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&me=df72d058-3e9b-4605-a7c7-d697fc97d63f&trackId=236&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
01-11-2021, 08:49 PM
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.
Help
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"
01-11-2021, 08:54 PM
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');
}
}