You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
因为实际应用中,无法事先确定设备是否存在音频,所以统一在flv头中设置了有音频标志,但是发送的flv流没有音频数据,这样就导致了播放界面黑屏。
经过调试发现问题在于下面一行: let ms = this._mediaSource = this._useManagedMediaSource ? new self.ManagedMediaSource() : new self.MediaSource();
因为实际应用中,无法事先确定设备是否存在音频,所以统一在flv头中设置了有音频标志,但是发送的flv流没有音频数据,这样就导致了播放界面黑屏。
经过调试发现问题在于下面一行:
let ms = this._mediaSource = this._useManagedMediaSource ? new self.ManagedMediaSource() : new self.MediaSource();
当flv流包含视频和音频时,this._mediaSource是正确的,其中的 activeSourceBuffers 数组有2个元素。
当flv流只有视频无音频时,activeSourceBuffers 数组元素个数为0,是否可以理解为:视频和音频的缓冲区全都没有?
源码中无法找到 self.MediaSource() 定义,不知道该如何修改,才能实现无音频时能正常播放视频。
看到有人提过类似的问题,但是没有可靠的解决方案。
@xqq大神说:确保 onMetaData 里面的 hasAudio / hasVideo 是准确的,客户端不指定则一般没有问题。
但是这个onMetaData里也是根据flv头中指定的标志来的,无法根据实际情况变化。因为在初始化创建this._mediaSource就已经出问题了
求大神给点思路,非常感谢!!!
The text was updated successfully, but these errors were encountered: