2013-07-24 6 views
10

Il dispositivo Chromecast è un "dispositivo ricevente [che] esegue un browser Chrome ridimensionato con un'applicazione di ricezione". Posso scaricare e installare questa app ricevente su un browser Chrome, ad esempio sul mio Windows notebook?Crea il tuo dispositivo Chromecast

+4

Poiché questa non è una domanda di programmazione, Stack Overflow non è il posto giusto. Tuttavia, la risposta alla tua domanda è no. –

+0

A prima vista questa non è una domanda di programmazione, ma se è possibile scaricare questa app mi piacerebbe vedere come integrare questo nel mio software. Quindi diventa una domanda di programmazione. –

+2

Se desideri creare un'applicazione che utilizzi l'API di Chromecast per trasmettere i contenuti a Chromecast, probabilmente dovrai aspettare che l'API (e i dispositivi) rimanga fuori per consentire alle persone di comprendere la restrizione del contenuto. Chromecast è un dispositivo, venduto da Google, che può essere comunicato tramite l'API di Chromecast, quindi la domanda come hai dichiarato "Posso creare il mio dispositivo?", Ha la risposta "No". –

risposta

10

Il dispositivo chromecast funziona con il protocollo DIAL. È completamente possibile emulare questo protocollo utilizzando un codice semplice da ascoltare sul gruppo multicast per la rilevazione e quindi gestire le richieste HTTP per avviare le applicazioni. È quindi l'applicazione lanciata che comunica con il dispositivo di trasmissione, credo che usi il protocollo RAMP.

Fortunatamente per noi le applicazioni utilizzate dal dispositivo chromecast sono principalmente applicazioni Web, il che significa che il nostro emulatore di dispositivo deve solo avviare un browser Web e puntarlo su un URL specifico quando riceve una richiesta di applicazione.

Ad esempio l'app di youtube, dopo il rilevamento del dispositivo e l'individuazione delle posizioni delle applicazioni (parte di DIAL). Invia una richiesta HTTP POST contenente una chiave di abbinamento a /<apps url>/YouTube. Tutto ciò che il dispositivo di emulazione deve fare ora è aperto https://www.youtube.com/tv?<pairing key> in una finestra del browser. Da qui, credo, la comunicazione per il controllo dell'app youtube non viene inviata attraverso il dispositivo di trasmissione ma attraverso le schede aperte sul dispositivo di trasmissione e l'emulatore.

Questa è la mia comprensione di come funziona il dispositivo chromecast e in particolare l'app di youtube dal https://github.com/dz0ny/leapcast, che è un emulatore python con funzionamento di youtube e google.

+5

Si noti che questa risposta non è più attuale: il Chromecast V2 utilizza [mDNS attualmente] (https://github.com/jloutsenhizer/CR-Cast/wiki/Chromecast-Implementation-Documentation-WIP) e credo [ protobuf] (https://github.com/google/protobuf). Il resto è del flusso rimane più o meno lo stesso davvero. Sfortunatamente, lo sviluppo per far funzionare V2 sul Leapcast collegato (che funziona ancora perfettamente per YouTube) sembra essersi fermato. – Wrikken

+0

Proprio così, recentemente dopo aver catturato alcuni pacchetti ho trovato almeno questi protocolli prendere parte alla negoziazione: - appartenenza UDP/IGMP a 239.255.255.250. - UDP/SSDP m-search su 239.255.255.250, inclusa risposta TCP/XML. - Risposta UDP/uPnP unicast da ChromeCast a PC. - Domanda UDP/MDNS su 224.0.0.251, inclusa la risposta multicast da ChromeCast. – JCM

0

Google è in corso di open source di alcune parti del cast di Chrome.

https://code.google.com/p/chromium/codesearch#chromium/src/chromecast/

https://code.google.com/p/chromium/issues/list?q=label:Chromecast

Quindi, in teoria si può costruire un dispositivo simile.

+0

Sfortunatamente, la prima parte (open source) non implica la seconda (quindi teoricamente è possibile creare un dispositivo simile) perché l'ecosistema di Chromecast è protetto dalla crittografia posseduta e controllata da Google – mjaggard

8

ho implementato un ricevitore completo Chromecast v2, chiamato YouMap Chromecast ricevitore, disponibile in Google Play Store e negozio di Amazon, filo xda-developer qui: http://forum.xda-developers.com/android-tv/chromecast/app-youmap-chromecast-receiver-android-t3161851

L'attuale protocollo Chromecast è uno completamente diverso dall'originale Protocollo basato su DIAL. Al momento, solo YouTube utilizza ancora il vecchio protocollo, che mantiene la compatibilità con le versioni precedenti.

Il rilevamento è mDNS, esattamente come il protocollo Bonjour di Apple TV.

La parte più difficile è l'autenticazione del dispositivo, il mittente e il destinatario eseguono gli handshake scambiando chiavi e certificati in un modo estremamente difficile da decifrare. AppleTV fa lo stesso con la crittografia FairPlay.

La parte successiva difficile è il protocollo di mirroring, che è anche molto complicato, deve occuparsi di split di pacchetti, ritrasmissioni di pacchetti. Nel complesso, il protocollo di chromecast mirroring è ben progettato, migliore di miracast, migliore del mirroring di AirPlay (ho anche implementato entrambi, quindi so di cosa sto parlando).

Quando ho possibilità, scriverò di più qui.

+0

Sembra che venga utilizzato il DRM hardware (widevine ?) per autenticare i ricevitori cast. Credo che questo significhi se vogliamo emulare un ricevitore, abbiamo almeno bisogno di un dispositivo sacrificale legittimo con il quale possiamo indirizzare il flusso dell'autorizzazione? – deed02392