|
a/doc/upmpdcli-manual.txt |
|
b/doc/upmpdcli-manual.txt |
|
... |
|
... |
614 |
*sc2mpd* must be set in _alsa_ mode for multiroom setups. In _mpd_ mode,
|
614 |
*sc2mpd* must be set in _alsa_ mode for multiroom setups. In _mpd_ mode,
|
615 |
the Receivers can be out of sync by several seconds.
|
615 |
the Receivers can be out of sync by several seconds.
|
616 |
|
616 |
|
617 |
|
617 |
|
618 |
[[UPMPDCLI-MS-STR]]
|
618 |
[[UPMPDCLI-MS-STR]]
|
619 |
== Upmpdcli Media Server: streaming services
|
619 |
== Support for Streaming Services
|
620 |
|
620 |
|
|
|
621 |
=== Streaming Services and UPnP
|
|
|
622 |
|
|
|
623 |
Streaming services like Qobuz or Tidal give access to a huge catalog of
|
|
|
624 |
music through a WEB interface (also usable by programs).
|
|
|
625 |
|
|
|
626 |
The only thing that they have in common with UPnP is that the actual audio
|
|
|
627 |
stream is obtained through HTTP. However, given their importance, they can
|
|
|
628 |
be accessed through many UPnP Control Points and Renderers.
|
|
|
629 |
|
|
|
630 |
There are three main ways to integrate the streaming services in an UPnP
|
|
|
631 |
framework, and knowing which way you are using will avoid confusion:
|
|
|
632 |
|
|
|
633 |
- The first approach is to have a UPnP Media Server act as a proxy for the
|
|
|
634 |
service: the catalog is browsed through a standard UPnP interface (the
|
|
|
635 |
Media Server translates this to the service API behind the scenes), and
|
|
|
636 |
the audio URIs are also accessed in an almost standard way (after a bit
|
|
|
637 |
of magic inside the Media Server). The one inconvenient of this approach
|
|
|
638 |
is that the special functions of the service (like managing the user
|
|
|
639 |
favourites lists) are mostly inaccessible. The advantage is that any
|
|
|
640 |
naive UPnP Control Point can access the streaming service. The Media
|
|
|
641 |
Server inside upmpdcli xref:UPMPDCLI-MS-STR-MS[implements this method].
|
|
|
642 |
|
|
|
643 |
- The second approach is to do everything inside the Control Point. The CP
|
|
|
644 |
uses the service API for browsing (and possibly do things like managing
|
|
|
645 |
favourites). The CP also mediates the HTTP access to the audio streams
|
|
|
646 |
(the URIs the CP sends to the Renderer point to itself, and it arranges
|
|
|
647 |
to forward the data from the service). This is implemented, for example,
|
|
|
648 |
by Bubble UPnP. The drawback of this approach is that the CP can't go to
|
|
|
649 |
sleep or out of reach, else the music will stop (maybe at the next track).
|
|
|
650 |
|
|
|
651 |
- The third approach is to distribute the function between CP and
|
|
|
652 |
Renderer. The Control Point performs the browsing and access to special
|
|
|
653 |
functions, and the Renderer knows how to access the service streams. This
|
|
|
654 |
is the OpenHome approach and can be considered the best of both worlds,
|
|
|
655 |
at the price of complexity and compatibility issues. This method is
|
|
|
656 |
implemented by the Kazoo and Lumin Control Points, and a number of
|
|
|
657 |
Renderers, the Linn and Lumin ones of course, but also,
|
|
|
658 |
xref:UPMPDCLI-MS-STR-CRED[lately by upmpdcli].
|
|
|
659 |
|
|
|
660 |
[[UPMPDCLI-MS-STR-MS]]
|
|
|
661 |
=== Accessing Streaming Services through the upmpdcli Media Server
|
|
|
662 |
|
621 |
The Media Server function in Upmpdcli (1.2.0 and later) gives access to
|
663 |
The Media Server function in Upmpdcli (1.2.0 and later) gives access to
|
622 |
external streaming services: Qobuz, Tidal, and Google Music at the moment.
|
664 |
external streaming services: Qobuz, Tidal, and Google Music at the moment.
|
623 |
|
665 |
|
624 |
You will need a valid account on any service that you want to use.
|
666 |
You will need a valid account on any service that you want to use.
|
625 |
|
667 |
|
|
... |
|
... |
652 |
|
694 |
|
653 |
NOTE: I have no reason to believe that upmpdcli is technically mis-using
|
695 |
NOTE: I have no reason to believe that upmpdcli is technically mis-using
|
654 |
the streaming services in any way, but it is definitely not approved by any
|
696 |
the streaming services in any way, but it is definitely not approved by any
|
655 |
of them, and you are using it under your own responsibility.
|
697 |
of them, and you are using it under your own responsibility.
|
656 |
|
698 |
|
657 |
=== Notes on the Tidal interface
|
699 |
==== Notes on the Tidal interface
|
658 |
|
700 |
|
659 |
[NOTE]
|
701 |
[NOTE]
|
660 |
===================================
|
702 |
===================================
|
661 |
There seems to be problems when streaming Tidal lossless/FLAC streams,
|
703 |
There seems to be problems when streaming Tidal lossless/FLAC streams,
|
662 |
with the default MPD configuration. A preliminary and rather superficial
|
704 |
with the default MPD configuration. A preliminary and rather superficial
|
|
... |
|
... |
681 |
It only works with a valid Tidal subscription.
|
723 |
It only works with a valid Tidal subscription.
|
682 |
|
724 |
|
683 |
The configuration parameters are described in the
|
725 |
The configuration parameters are described in the
|
684 |
<<tidaluser,configuration section>>
|
726 |
<<tidaluser,configuration section>>
|
685 |
|
727 |
|
686 |
=== Notes on the Qobuz interface
|
728 |
==== Notes on the Qobuz interface
|
687 |
|
729 |
|
688 |
This is based on the service API from the
|
730 |
This is based on the service API from the
|
689 |
link:https://github.com/tidalf/plugin.audio.qobuz[Kodi add-on], by Joachim
|
731 |
link:https://github.com/tidalf/plugin.audio.qobuz[Kodi add-on], by Joachim
|
690 |
Basmaison and Cyril Leclerc, with the upper-level code adapted from the
|
732 |
Basmaison and Cyril Leclerc, with the upper-level code adapted from the
|
691 |
Tidal add-on. The WEB API is not officially supported by Qobuz, and may
|
733 |
Tidal add-on. The WEB API is not officially supported by Qobuz, and may
|
|
... |
|
... |
700 |
|
742 |
|
701 |
The configuration parameters are described in the
|
743 |
The configuration parameters are described in the
|
702 |
<<qobuzuser,configuration section>>
|
744 |
<<qobuzuser,configuration section>>
|
703 |
|
745 |
|
704 |
[[upmpdcli.googlemusicnotes]]
|
746 |
[[upmpdcli.googlemusicnotes]]
|
705 |
=== Notes on the Google Music interface
|
747 |
==== Notes on the Google Music interface
|
706 |
|
748 |
|
707 |
This is based on the
|
749 |
This is based on the
|
708 |
link:https://github.com/simon-weber/gmusicapi[gmusicapi] Python package by
|
750 |
link:https://github.com/simon-weber/gmusicapi[gmusicapi] Python package by
|
709 |
Simon Weber, with upper-level code from the Tidal Kodi add-on. As for the
|
751 |
Simon Weber, with upper-level code from the Tidal Kodi add-on. As for the
|
710 |
other services, the API used is not officially supported and may stop to
|
752 |
other services, the API used is not officially supported and may stop to
|
|
... |
|
... |
725 |
way to make things work, using an app password].
|
767 |
way to make things work, using an app password].
|
726 |
|
768 |
|
727 |
The configuration parameters are described in the
|
769 |
The configuration parameters are described in the
|
728 |
<<gmusicuser,configuration section>>
|
770 |
<<gmusicuser,configuration section>>
|
729 |
|
771 |
|
|
|
772 |
|
|
|
773 |
[[UPMPDCLI-MS-STR-CRED]]
|
|
|
774 |
=== Accessing the streaming services with OpenHome from Kazoo or Lumin
|
|
|
775 |
|
|
|
776 |
This only works for Qobuz and Tidal. The corresponding media server module
|
|
|
777 |
must be installed, but no other configuration should be needed on the
|
|
|
778 |
renderer. The media service icons will appear in the CP interface, and the
|
|
|
779 |
service will be accessible after entering the login and password.
|
|
|
780 |
|
|
|
781 |
NOTE: the user name and password will be stored on the renderer in an
|
|
|
782 |
insecure way, meaning that if someone steals the machine or obtains root
|
|
|
783 |
access, there is nothing to prevent them from getting the credentials.
|
|
|
784 |
|
|
|
785 |
Of course Kazoo or Lumin can also access the services through the media
|
|
|
786 |
server interface (after configuring upmpdcli, see the
|
|
|
787 |
xref:UPMPDCLI-MS-STR-MS[previous section]).
|
730 |
|
788 |
|
731 |
[[UPRCL]]
|
789 |
[[UPRCL]]
|
732 |
== Upmpdcli local Media Server: uprcl
|
790 |
== Upmpdcli local Media Server: uprcl
|
733 |
|
791 |
|
734 |
The current (2017-04) upmpdcli code base includes a Media Server function
|
792 |
The current (2017-04) upmpdcli code base includes a Media Server function
|