我只是使用webrtc 压缩和播放声音,并不使用其网络功能。
因此结构:
1. 麦:webrtc -> OutStream Write -> Send Data To Net
2. 播放:Recv Data From Net -> buffer -> InStream Read -> webrtc
问题如下:
webrtc 调用 InStream Read 方式来获取数据,以播放声音。但是我的数据需要等待网络传给我。
可能到了,可能没到。
如果数据没有到时,此时,我调用 开启麦 功能,失败。
查了,2天终于明白了,是这个原因。
也就是:
WEBRTC 开启麦功能,需要完成 InStream Read API 的回调。(当然也肯定调用了OutStream Write)
但是当我没有数据播放时,我无法返回:InStream Read 方法。如果我返回: 0, 将停止播放声音。
但如果我返回0后,数据又从网络收到了,又得开启播放。(因此我是不愿意返回0的)
所以这里就造成了一个矛盾。
//
解决这个矛盾感觉只能做好数据的持续化提供给:WebRTC 播放器播放。或者提供假数据以让InStream Read总能很快返回。