Добавяне на CORS заглавки при заявка на .m3u8 файлове с помощта на обратен прокси

Създавам приложение за Chromecast, където искам да предавам поточно .m3u8 файлове (HLS) от доставчик на поточно предаване. Доставчикът на стрийминг не добавя CORS заглавки към HTTP заглавките, което е изискване за изграждане на приложения за Chromecast.

Има ли някакъв начин да насочите заявките през прокси и проксито да добави необходимите заглавки за .m3u8 файлове? AFAICS, .m3u8 файловете допълнително сочат към файлове за различните потоци с честотна лента, така че би било необходимо проксито да добави подходящи CORS заглавки към заглавката и за тези файлове.

Ето пример за връзка към .m3u8 файл, който искам да мога да предавам поточно.


person hanspeide    schedule 16.02.2014    source източник


Отговори (5)


Хей, осъзнавам, че съм малко закъснял, но реших да публикувам тук, в случай че други го намерят за полезно. Имах същия проблем при разработването на приложение за Chromecast. Простото решение, което намерих, беше да включа библиотеката TOMODOkorz, която ще прекара всички http заявки през нейния прокси.

Можете да хоствате свой собствен прокси и да промените библиотеката, за да сочи към вашата сравнително лесно.

person Conor Restall    schedule 27.03.2014

Това всъщност е възможно чрез пренаписване на URL адресите в библиотеката на Media Player на Chromecast и наличието на тези подсписъци за изпълнение също прокси чрез CORS прокси като http://www.corsproxy.com/.

За да направите това във вашия персонализиран приемник, не импортирайте библиотеката, хоствана от Google
<script type="text/javascript" src="//www.gstatic.com/cast/sdk/libs/mediaplayer/0.5.0/media_player.js"></script>

Вместо това копирайте обфусцирания javascript директно в html страницата на вашия приемник и направете следното:

  • Намери+замени g.D.url=k с g.D.url='http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,'')
  • Намери+замени url:k с url:('http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,''))

Сега, ако изпратите първоначалния contentId до Chromecast с http://www.corsproxy.com/YOUR_M3U8_FILE_HERE, трябва да имате напълно функционално HLS-възпроизвеждащо приложение Chromecast.

person Nano    schedule 24.04.2014
comment
Фантастично, благодаря! Това реши проблемите ми с получаването на повечето от HLS-потоците, които исках да пусна. Някои потоци обаче изискват HTTPS. Някакви предложения за разрешаване на това? - person kristofferR; 05.05.2014
comment
Всъщност тествали ли сте това решение? От моето разследване изглежда, че действителните двоични файлове ще трябва да имат добавени и CORS заглавки, а corsproxy.com изглежда не добавя тези заглавки към файловете, към които .m3u8 има препратки. - person hanspeide; 11.06.2014

Повечето доставчици имат възможност да задават CORS за своите клиенти. Акамай със сигурност го прави.

person Les Vogel - Google DevRel    schedule 17.02.2014

Успях да предавам поточно HLS към ChromeCast от кофа S3, като добавих разрешаващ CORS файл към разрешенията за кофата.

person marxy    schedule 06.03.2014

За да отговоря на собствения си въпрос: Това не е възможно без повторно излъчване на потоците. .m3u8 файловете са файлове, съдържащи връзки към други файлове, които в крайна сметка също съдържат двоичните файлове. Всички те, включително HTTP отговорът, съдържащ двоичния файл, се нуждаят от CORS заглавките, за да може Chromecast да покаже съдържанието.

Ако търсите само да добавите CORS заглавки към текстови отговори, corsproxy.com е добра алтернатива, дълга с няколко налични проекти с отворен код.

person hanspeide    schedule 20.03.2014
comment
corsproxy.com беше много добър, но вече не работи. Има ли алтернативен сървър със същата функционалност? - person user4500; 04.05.2015