Получает ли ресивер Google Cast v3 альтернативные аудиодорожки из основного списка воспроизведения hls или мне нужно определить их в отправителе? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь получить мульти-аудио HLS-поток, работающий над приложением-приемником Google Cast v3.Основной список воспроизведения потока относится к нескольким воспроизведению видео с разным разрешением и двумя альтернативными звуковыми дорожками:

#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="de",NAME="TV Ton",DEFAULT=YES, AUTOSELECT=YES,URI="index_1_a.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="de",NAME="Audiodeskription",DEFAULT=NO, AUTOSELECT=NO,URI="index_2_a.m3u8"
#EXT-X-STREAM-INF:AUDIO="aac",BANDWIDTH=383000,RESOLUTION=320x176,CODECS="avc1.4d001f, mp4a.40.2",CLOSED-CAPTIONS=NONE
index_0_av.m3u8
...more renditions
#EXT-X-STREAM-INF:AUDIO="aac",BANDWIDTH=3697000,RESOLUTION=1280x720,CODECS="avc1.4d001f, mp4a.40.2",CLOSED-CAPTIONS=NONE
index_6_av.m3u8

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

При доступе к методу getTracks () AudioTracksManager при перехвате сообщения LOAD, например, так ...

playerManager.setMessageInterceptor(
  cast.framework.messages.MessageType.LOAD, loadRequestData => {
    loadRequestData.media.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.TS
    const audioTracksManager = playerManager.getAudioTracksManager();
    console.log(audioTracksManager.getTracks())
    console.log('Load request: ', loadRequestData);
    return loadRequestData;
  });

Я получаю сообщение об ошибке:

Uncaught Error: информация о треках недоступна.

Может быть, не связана, но очень странно: я могу console.log поддержать медиа-запрос запросаи увидеть его следы prop (массив с ожидаемыми 1 видео и 2 звуковыми дорожками), однако, если я пытаюсь получить доступ к свойству track в перехватчике сообщений LOAD, я получаю undefined.

В настоящее время я не могу заглянуть вКод отправителя iOS пока отсутствует, поэтому я попытался устранить источники ошибок на стороне получателя.Дело в том, что

Я всегда предполагал, что при загрузке списков воспроизведения HLS приемник самостоятельно определяет альтернативные звуковые дорожки.Верно ли это предположение или AudioTracksManager может обращаться только к трекам, которые ранее были определены в приложении-отправителе?

Я не смог найти четкое утверждение об этом в справочнике Google Cast ...

1 Ответ

0 голосов
/ 05 февраля 2019

Хорошо, чувствую себя глупо из-за того времени, которое я потратил на это, но я наконец-то смог ответить на свой вопрос.Я не осознавал, что обращался к AudioTracksManager не в том месте, а именно в перехватчике сообщений LOAD, а не в прослушивателе событий PLAYER_LOAD_COMPLETE (как это правильно задокументировано здесь )

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

Итак, чтобы ответить на мой оригинальный вопрос: Да, приложение приемника автоматически определяет альтернативные звуковые дорожки из списка воспроизведения HLS.

...