Posts: 6,030
Threads: 177
Joined: Apr 2018
Reputation:
235
A follow-up after calming down.
After poking around a bit I figured out how to build the Platinum SDK in 64-bit RaspbiOS.
I can run the included sample applications and they seem to be working. For example, I have the FileMediaServerTest application running on my Pi400 and serving music tracks. I have mconnectLite on my iPad (a combined UPnP Control Point/MediaRenderer application) which is playing the tracks.
But, again, C++ , sigh.
Regards,
Kent
Posts: 13,453
Threads: 305
Joined: Mar 2018
Reputation:
545
So is just like upmpdcli?
Posts: 6,030
Threads: 177
Joined: Apr 2018
Reputation:
235
(02-28-2024, 09:57 PM)Tim Curtis Wrote: So is just like upmpdcli?
Sure, in the sense that both are implemented in C++. However, upmpdcli comes with extensive documentation, a decent website, an active userbase, and the ever helpful Jean Francois! His page on implementing plugins is pure gold compared to the Doxygen listing of Platinum classes.
Regards,
Kent
Posts: 13,453
Threads: 305
Joined: Mar 2018
Reputation:
545
02-29-2024, 12:11 AM
(This post was last modified: 02-29-2024, 12:14 AM by Tim Curtis.
Edit Reason: eta
)
What I suppose I meant was does it provide the same functionality, but better in some way?
Posts: 6,030
Threads: 177
Joined: Apr 2018
Reputation:
235
02-29-2024, 12:39 AM
(This post was last modified: 02-29-2024, 12:48 AM by TheOldPresbyope.
Edit Reason: ETA
)
(02-29-2024, 12:11 AM)Tim Curtis Wrote: What I suppose I meant was does it provide the same functionality, but better in some way?
Sorry, I was being churlish.
All I did was fire up one of the 5 sample applications to see if my build in RaspbiOS worked.
Have a look at the descriptions of these applications on https://github.com/plutinosoft/Platinum/tree/master. I don't know whether any of them could be the inspiration for a better djmount replacement (see ETA below) but at least they demonstrate the use of the Platinum C++ classes.
Regards,
Kent
ETA - Of the 5 sample applications, only the MicroMediaController and the MediaCrawler sound promising.
Posts: 13,453
Threads: 305
Joined: Mar 2018
Reputation:
545
Oh ok djmount replacement. I lost track of that.
Posts: 19
Threads: 2
Joined: Jan 2024
Reputation:
2
02-29-2024, 08:16 PM
(This post was last modified: 02-29-2024, 08:45 PM by bsergiu.
Edit Reason: Adding details
)
Wouldn't the MPD upnp Plug-in activation already expose the UPNP server content as an additional root folder in mpd, and thus available in the library ?
database {
plugin "upnp"
}
As described here : https://www.lesbonscomptes.com/pages/mpd-upnp.html
The mpd binary on the Moode does not have the upnp plug-in activated, but on another Ubuntu laptop I have in the network I have that, and here is what I get:
mpc ls
192.168.178.55 - Sonos Move192.168.178.55 - Sonos Move Media ServerGarten - Sonos Move Media Renderer
Michi-X3 UPNP-mediaserver
The first one is a Sonos Move, the other one is a upmpdcli running on the Moode Raspi.
Drawback: I need to disable the mpd db, but I guess people would use either or ...
That should make the library browser UI happy, or? Am I wrong ?
Posts: 13,453
Threads: 305
Joined: Mar 2018
Reputation:
545
(02-29-2024, 08:16 PM)bsergiu Wrote: Wouldn't the MPD upnp Plug-in activation already expose the UPNP server content as an additional root folder in mpd, and thus available in the library ?
database {
plugin "upnp"
}
As described here : https://www.lesbonscomptes.com/pages/mpd-upnp.html
The mpd binary on the Moode does not have the upnp plug-in activated, but on another Ubuntu laptop I have in the network I have that, and here is what I get:
mpc ls
192.168.178.55 - Sonos Move192.168.178.55 - Sonos Move Media ServerGarten - Sonos Move Media Renderer
Michi-X3 UPNP-mediaserver
The first one is a Sonos Move, the other one is a upmpdcli running on the Moode Raspi.
Drawback: I need to disable the mpd db, but I guess people would use either or ...
That should make the library browser UI happy, or? Am I wrong ?
I remember testing this a long while back and IIRC it's basically same as djmount.
The main problem is that moOde's Library expects standard artist/album/track directory structure but UPnP media servers have various directory structures for artists and albums, multiple references to artists and albums plus the directory structures are not consistent across different vendor's media servers.
What does MPD database look like after mpc update?
Posts: 19
Threads: 2
Joined: Jan 2024
Reputation:
2
Hi @ Tim Curtis ,
An "mpc update" does not work in this case, it says "not implemented". Also, the database must be disabled in mpd.conf when the upnp plug-in is enabled.
However, I can navigate though with lsinfo (my upnp server is actually proxying Qobuz, so I browse Qobuz in fact, and it works) - and this is I guess what Moode UI does as well in the folder view. I can see and add tracks to the queue; when I ask mpd to play, I get the error "Failed to decode trackId=46264840; Unrecognized URI". Not sure why, because other MPD can play from the same mediaserver with the same commands issued with mConnect (instead of mpc) , but this may be an issue with my set-up. It is also a good sign, that it gets the URL right
I'll try to re-compile mpd with the upnp enabled on the Moode machine and report back here.
Posts: 6,030
Threads: 177
Joined: Apr 2018
Reputation:
235
Well, since the link to Jean-Francois' discussion of his effort has already been posted, https://www.lesbonscomptes.com/pages/mpd-upnp.html, why don't we read it?
Once you get past all the niff-naff about building his MPD plugin (now part of the MPD distro), you get to the good stuff like
Quote:Once mpd is running, your client should see a list of the network Media Servers as the top level directory.
Under the top level, you will see the hierarchy chosen by the type of Media Server, which usually has little to do with the file tree (so this is quite different from the usual MPD).
Note that you should always follow the 'Browse by Folder' options from the MPD client (these can have various names depending on the MPD client). Options to browse by artist or album, as provided by MPD will not work. You will find equivalent lists inside the tree shown by the UPnP server.
UPnP servers do not expose functionality which could be used to implement the direct tag-based browsing offered by an MPD server.
...
and
Quote:Known issues
Loading playlists should work, but saving them probably won’t.
Recursive directory add does not work fully: the depth is limited to 1, so this is ok to add an album directory, but it won’t go further.
Things based on VisitUniqueTags, like requesting all genres, or all artists, does not work, so the metadata browsers in most clients do not work. UPnP just does not work like this. Browse the database tree instead: it will usually have a directory with all the artists, one with the albums, the genres.
There is a fundamental difference about track identifiers between MPD and UPnP. As far as I understand, for MPD, the pathname is the fundamental identifier. This is not the case at all for UPnP, where a given track will be seen under several pathnames in the virtual tree, and objects are identified by an arbitrary unique Id.
The MPD plugin synthetizes paths based on track or container title attributes, but this means that a directory can contain apparently identical paths (if several entries have the same title).
There could be ways around this (the title could be made unique in some way), but I did not pursue them. Simply adding other fields may not be enough, so this would have to be based on the object id, or some other arbitrary value.
The consequences are mostly for searching. The normal pathnames are mostly useless as search results (typically a search for "Satisfaction" may have the UPnP server respond with entries under "All Music", all with the same title).
In this situation the MPD plugin choses to respond with arbitrary and recognizable paths based on the object ID, but clients which directly display them end up showing garbage. Happily enough most clients retrieve the object attributes for display, which works fine. Notably, phpmp does not.
...
As Tim says, basically like djmount and for the same reasons.
Regards,
Kent
|