我正在使用 HTML5媒体源扩展 (MSE)使用DASH流式传输视频。我使用MP4Box从一个包含两个视频轨道的 MP4 文件创建了我的媒体片段。所以我所拥有的是一个带有moov->sidx
盒子和多个moof->mdat
包含两个视频轨道的媒体段的初始化段。如果我将它们推送到sourceBuffer
withappendBuffer
函数,MSE 将解码并仅显示第一个视频轨道(我假设来自第二个视频轨道的数据只是被丢弃)。
以下是我的代码中的相关部分:
sourceBuffer = mediaSource.addSourceBuffer(stats.mimeType); // mime type: video/mp4
...
// after downloading mediasegment append its contents 'data' to sourceBuffer
sourceBuffer.appendBuffer(new Uint8Array(data));
所以我的问题是,是否可以控制 sourceBuffer 以使客户端可以选择要解码的轨道?我想将视频轨道拆分为不同的适配集(创建单独的 mp4 文件,每个文件都有一个视频轨道)可能是一种解决方案,但我对这种方法不感兴趣。
谢谢你们。