Remote control συνηθιζεται να ονομαζεται μια συσκευη που ελεγχει τις λειτουργιες μιας αλλης.
Αυτό ακριβώς κάνει.
Το ότι υποστηρίζει upnp δεν του απαγορεύει να παίξει και local, airplay, chromecast, whatever.
Να δούμε λίγο πως δουλεύει το
πρωτόκολλο UPnP για να ξεκαθαρίσουμε τα πράγματα.
Αφού κάνει το
discovery, του απαντήσουν οι συσκευές ότι υποστηρίζουν UPnP και τι δυνατότητες έχει η κάθε μία, το application ψάχνει στις πηγές που έχουμε για τραγούδια. Είτε αυτό είναι ένας τοπικός δίσκος, είτε κάποιο streaming service.
Όταν το επιλέξουμε πάμε στη φάση
Set URI, όπου θα κάνει ένα post σε μορφή SOAP στον renderer με πληροφορίες για το όνομα, τον καλλιτέχνη, το album, που βρίσκεται, διάρκεια, μέγεθος και format.
Η συσκευή απαντάει με ένα ok (SOAP response) που σημαίνει ότι είναι έτοιμη,
έχει σημειώσει τι πρέπει να παίξει.
Στη φάση του control, στέλνουμε πάλι ένα SOAP request, π.χ. για να ξεκινήσει να παίζει.
Κάτι του στυλ
Code:
POST /upnp/control/AVTransport1 HTTP/1.1
HOST: 192.168.1.50:49152
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
CONTENT-TYPE: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<Speed>1</Speed>
</u:Play>
</s:Body>
</s:Envelope>
Δηλαδή, παίξε το τραγούδι σε ταχύτητα 1x.
Πλέον, ο renderer (το ηχείο, το streamer, whatever) θα ξεκινήσει το audio streaming με GET.
Θα κάνει δηλαδή ένα request του στυλ
GET /library/metadata/12847/file?path=%2Fmusic%2FMetallica%2FMaster_of_Puppets%2F01_Battery.flac HTTP/1.1
HOST: 192.168.1.30:32400
RANGE: bytes=0-
CONNECTION: keep-alive
Η μόνη επικοινωνία από εκεί και πέρα είναι
από τον renderer προς το application, για να ενημερώνει το BubbleUPnP το progress bar. Εκτός φυσικά αν του πουμε να κάνει pause, stop ή να παίξει άλλο τραγούδι.
Αν κλείσουμε ακόμη και το κινητό μας, το τραγούδι θα συνεχίσει να παίζει, αλλά όταν τελειώσει (αν δεν έχουμε στείλει λίστα στον renderer) δεν θα παίξει άλλο.
ΣΕ ΠΟΙΟ σημείο λοιπόν αυτής της ροής, ένα UPnP application θα επηρεάσει την ποιότητα του ήχου;
Μιλάμε πάντα για το
πρωτόκολλο UPnP και όχι "υποστηρίζω UPnP αλλά παίζω με chromecast" ή "το ακούω από το κινητό μου".
Αν θέλετε να κάνετε και πείραμε, κάντε isolate το streamer σας από το internet να δείτε τελικά από που παίρνει το stream. Αν το παίρνει από το κινητό, θα παίξει κανονικά.