我已经构建了一些代码,可以让MediaRecorder API捕获音频和视频,然后使用ondataavailable函数通过websockets将相应的webm文件blob发送到服务器。然后,服务器通过websockets将这些blob发送到客户端,websocket使用Media Source Extension API将视频放在缓冲区中。
这很好用,除非我想在中途启动一个流,我不能只发送最新的blob,因为blob本身是无法播放的。此外,如果我不按顺序发送blob,浏览器通常会抱怨音频编码不匹配。
我真的不太了解视频容器,编解码器等,因为我应该把它关闭,但我的问题是,我怎么能将这些blob作为独立视频播放?我可以以某种方式使用代码将第一个blob中的信息(可单独播放)添加到其他blob上吗?能够让游戏中途播放的好方法是什么?我会转码,但似乎需要太长时间,因为我想设置实时(或接近)流。
谢谢!
使用MSE,您可以加载包含带有跟踪信息的WebM段的第一个块,然后加载,然后再开始加载集群。浏览器会搞清楚。
WebM群集以时间戳开头,这使得它可以工作。