Как работает Chromecast?

Введение Загорелся я недавно выбором беспроводного адаптера для передачи видео. Смотрел китайские адаптеры с Miracast/DLNA и, естественно, не обошел меня стороной и Chromecast. Если с такими технологиями, как WiDi, Miracast и донглами вроде AIRTAME все понятно (не требуется поддержка со стороны софта, видится системой как еще один монитор), как устроен Chromecast внутри я не был до конца уверен, как и не был уверен, подойдет ли он мне. Однако, я нашел open-source проект эмулятора Chromecast LeapCast, и решил его испробовать в работе, а также изучить протокол.Установка и использование Установка на ArchLinux довольно простая — достаточно установить пакет leapcast-git из AUR. Необходимо еще установить Google Chrome или Chromium, т.к. его нет в зависимостях. Запускаем программу и видим следующую картину: Скрытый текстINFO: root: Starting SSDP server INFO: root: Starting LEAP server INFO: root: Loading Config-JSON from Google-Server INFO: requests.packages.urllib3.connectionpool: Starting new HTTPS connection (1): clients3.google.com INFO: root: Parsing Config-JSON INFO: root: Added edaded98–5119–4c8a-afc1-de722da03562 app INFO: root: Added PlayMovies app INFO: root: Added 00000000–0000–0000–0000–000000000000 app INFO: root: Added 1812335e-441c-4e1e-a61a-312ca1ead90e app INFO: root: Added 06ee44ee-e7e3–4249–83b6-f5d0b6f07f34 app INFO: root: Added 2be788b9-b7e0–4743–9069-ea876d97ac20 app INFO: root: Added GoogleSantaTracker app INFO: root: Added 06ee44ee-e7e3–4249–83b6-f5d0b6f07f34_1 app INFO: root: Added Pandora_App app INFO: root: Added aa35235e-a960–4402-a87e-807ae8b2ac79 app INFO: root: Added YouTube app INFO: root: Added HBO_App app INFO: root: Added TicTacToe app INFO: root: Added Revision3_App app INFO: root: Added Songza_App app INFO: root: Added a7f3283b-8034–4506–83e8–4e79ab1ad794_2 app WARNING: root: Didn’t add Netflix because it has no URL! INFO: root: Added GoogleMusic app INFO: root: Added 18a8aeaa-8e3d-4c24-b05d-da68394a3476_1 app INFO: root: Added Post_TV_App app INFO: root: Added ChromeCast app INFO: root: Added Hulu_Plus app INFO: root: Added GoogleCastSampleApp app INFO: root: Added GoogleCastPlayer app INFO: root: Added Fling app Открываем любое приложение на андроид-смартфоне, поддерживающее Chromecast (например, YouTube), и можем подключиться к Leapcast: image В это же время в логе: Скрытый текстINFO: tornado.access:200 GET /ssdp/device-desc.xml (192.168.0.105) 2.22ms INFO: tornado.access:200 GET /apps/YouTube (192.168.0.105) 3.18ms INFO: tornado.access:200 GET /apps/YouTube (192.168.0.105) 3.67ms INFO: tornado.access:201 POST /apps/YouTube (192.168.0.105) 5.29ms INFO: root: Channel for app set to Ого, работает! Как же оно работает? Читать дальше →

© Habrahabr.ru