Switch to unified view

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