我试图让多音频流HLS在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
视频播放在发送者和接收者应用程序都很好,我可以在发送端应用程序看到两个音轨,但铸造到接收器时,有改变的音轨没有控制。
当访问AudioTracksManager的getTracks()方法,而拦截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;
});
我得到一个错误说:
未捕获的错误:曲目信息不可用。
也许无关,但超级怪异:我可以CONSOLE.LOG请求的媒体道具,看看它的轨道支撑(与预期的1路视频和2个音频轨道的数组),但是,如果我尝试访问的LOAD消息拦截轨道属性我得到了一个未定义。
我目前还不能看插入iOS发送代码,所以我试图消除在接收端的误差源。事情是:
我总是假定接收器加载HLS播放列表时,确定自身的替代音轨。这是假设是正确的,或者可以说已经在发件人应用先前定义的AudioTracksManager唯一通道的轨道?
我找不到在谷歌演员参考上一个明确的说法?
好吧,觉得自己很笨,因为我在这所花费的时间,但我终于可以回答我的问题。我不知道,我在访问AudioTracksManager在错误的地方 - 在PLAYER_LOAD_COMPLETE事件侦听器,即在LOAD消息拦截,而不是(因为它是正确记录here)
将我的逻辑到这个事件侦听器后,我能够访问和编程设置我的音轨。
因此,要回答我原来的问题:是的,在接收器应用程序会自动从HLS播放列表标识替代音轨。