WedX - журнал о программировании и компьютерных науках

настройка заголовка cors для chromecast

Как установить заголовки CORS для потоковой передачи файлов M3U8 в Chromecast? В моем отправителе (Android) я устанавливаю метаданные и медиаинформацию следующим образом:

metaData = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
metaData.putString(MediaMetadata.KEY_TITLE, "Demo Video");

MediaInfo mediaInfo = new MediaInfo.Builder(
        "https://playertest.longtailvideo.com/adaptive/bbbfull/bbbfull.m3u8")
        .setContentType("application/vnd.apple.mpegurl")
        .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
        .setMetadata(metaData)
        .build();

player.load(client, mediaInfo, true)
      .setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
       @Override
       public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) {
                    Status status = mediaChannelResult.getStatus();
                                 if (status.isSuccess()) {
                                  }
                                  }
                                  });

Мой метод onLoad настроен следующим образом:

mediaManager.onLoad = function(event) {
        console.log("### Media Manager - LOAD: " + JSON.stringify(event));

        if(mediaPlayer !== null) {
            mediaPlayer.unload(); // Ensure unload before loading again
        }

        if (event.data['media'] && event.data['media']['contentId']) {
            var url = event.data['media']['contentId'];

            mediaHost = new cast.player.api.Host({
                'mediaElement': mediaElement,
                'url': url
            });

            mediaHost.onError = function (errorCode) {
                console.error('### HOST ERROR - Fatal Error: code = ' + errorCode);

                if (mediaPlayer !== null) {
                    mediaPlayer.unload();
                }
            }

            var initialTimeIndexSeconds = event.data['media']['currentTime'] || 0;
            // TODO: real code would know what content it was going to access and this would not be here.
            var protocol = null;

            var parser = document.createElement('a');
            parser.href = url;

            var ext = ext = parser.pathname.split('.').pop();
            if (ext === 'm3u8') {
                protocol =  cast.player.api.CreateHlsStreamingProtocol(mediaHost);
            } else if (ext === 'mpd') {
                protocol = cast.player.api.CreateDashStreamingProtocol(mediaHost);
            } else if (ext === 'ism/') {
                protocol = cast.player.api.CreateSmoothStreamingProtocol(mediaHost);
            }
            console.log('### Media Protocol Identified as ' + ext);


            if (protocol === null) {

                mediaManager['onLoadOrig'](event); // Call on the original callback
            } else {

                mediaPlayer = new cast.player.api.Player(mediaHost);
                mediaPlayer.load(protocol, initialTimeIndexSeconds);
            }
        }
    }

Однако я получаю эту ошибку:

XMLHttpRequest cannot load https://playertest.longtailvideo.com/adaptive/bbbfull/bbbfull.m3u8. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '----' is therefore not allowed access. 

Как настроить заголовки CORS для Chromecast для Chromecast?

23.08.2014


Ответы:


1

Вероятно, слишком поздно, но только что столкнулся с той же проблемой и сделал это с помощью подхода, упомянутого ниже.

У меня не было возможности добавить заголовки на стороне приложения-отправителя, поэтому делюсь своим опытом. Я исправляю проблему CORS после первого подтверждения того, что мой сервер поддерживает CORS. А затем для воспроизведения мультимедиа на chromecast мне нужно было добавить gstatic.com и, в моем случае, еще один, а также разрешенные домены на сервере, что на самом деле является всей идеей CORS, что каждый домен должен быть известен нашему серверу. Вот и все.

Примечание. Обязательно ознакомьтесь с этой официальной документацией. Но для новичка это может показаться немного сложным, чтобы захватить все вещи отсюда. Так что поделился и собственным опытом.

13.12.2016
  • привет, не могли бы вы подробнее рассказать о добавлении gstatic.com, также не могли бы вы проверить эту проблему github.com/googlecast /CastReceiver/issues/26 27.07.2021
  • Вам необходимо внести в белый список источник chromecast, т. е. gstatic, на вашем сервере, чтобы поток мог быть получен по запросу от chromecast. 02.08.2021
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]