Устройство Chromecast — это «устройство-приемник, [которое] запускает уменьшенный браузер Chrome с приложением-приемником». Могу ли я загрузить и установить это приложение-приемник в браузере Chrome, например, на моем ноутбуке с Windows?
Создайте собственное устройство Chromecast
Ответы (3)
Устройство Chromecast работает по протоколу DIAL. Вполне возможно эмулировать этот протокол, используя простой код для прослушивания группы многоадресной рассылки для обнаружения, а затем обработки HTTP-запросов для запуска приложений. Затем запущенное приложение связывается с кастинговым устройством, я полагаю, используя протокол RAMP.
К счастью для нас, приложения, которые использует устройство Chromecast, в основном являются веб-приложениями, а это означает, что нашему эмулятору устройства просто нужно запустить веб-браузер и указать ему определенный URL-адрес, когда он получает запрос приложения.
Например, приложение YouTube после обнаружения устройства и определения местоположения приложений (часть DIAL). Отправит запрос HTTP POST, содержащий ключ сопряжения, на /<apps url>/YouTube
. Все, что нужно сделать эмулирующему устройству, это открыть https://www.youtube.com/tv?<pairing key>
в окне браузера. Отсюда, я полагаю, связь для управления приложением youtube отправляется не через кастинг-устройство, а через открытые вкладки на кастинг-устройстве и эмуляторе.
Это мое понимание того, как работает устройство Chromecast и, в частности, приложение YouTube, из https://github.com/dz0ny/leapcast — эмулятор Python, в котором работает YouTube и Google Music.
Я реализовал полный приемник chromecast v2 под названием YouMap ChromeCast Receiver, доступный в магазине Google Play и магазине Amazon, ветка xda-developer здесь: http://forum.xda-developers.com/android-tv/chromecast/app-youmap-chromecast-receiver-android-t3161851< /а>
Текущий протокол Chromecast полностью отличается от исходного протокола на основе DIAL. Сейчас только YouTube по-прежнему использует старый протокол, а chromecast поддерживает обратную совместимость.
Открытие — mDNS, точно такое же, как протокол Apple TV bonjour.
Самая сложная часть — это аутентификация устройства, отправитель и получатель выполняют рукопожатия, обмениваясь ключами и сертификатами таким образом, который чрезвычайно сложно взломать. AppleTV делает то же самое, используя шифрование FairPlay.
Следующей сложной частью является протокол зеркалирования, который также очень сложен, необходимо иметь дело с разделением пакетов, повторной передачей пакетов. В целом, протокол зеркалирования chromecast хорошо разработан, лучше, чем miracast, лучше, чем зеркалирование AirPlay (я также реализовал оба из них, поэтому я знаю, о чем говорю).
Когда у меня будет возможность, я напишу больше здесь.
Google находится в процессе открытия исходного кода некоторой части хромированного литья.
https://code.google.com/p/chromium/codesearch#chromium/src/chromecast/
https://code.google.com/p/chromium/issues/list?q=label:Chromecast
Так что теоретически можно построить подобное устройство.