如何在 WebRTC 中检测冻结的视频流
How to detect a frozen video stream in WebRTC
不幸的是,在使用 react-native-webrtc
进行一对一视频通话时,两个视频流之一会冻结或变黑。有没有办法检测何时以编程方式发生这种情况?提前致谢!
看起来每个视频轨道都有一个侦听器,一旦流冻结就会触发。
在 React Native 中它是 onmute
监听器:
stream.getVideoTracks().forEach(videoTrack => {
videoTrack.onmute = () => {
console.log("Frozen video stream detected!");
};
});
请注意,在 React Native 中使用此方法检测冻结流似乎仅适用于远程轨道!
为了检测流当前是否被冻结,我在视频轨道上使用 muted
属性:
console.log(videoTrack.muted); // true when frozen
另一种我发现但没有进一步探索的方法是 RTCPeerConnection 上的 getStats()
方法。它 returns 具有大量数据的承诺,可用于检测冻结的视频流,我想还有更多。
不幸的是,在使用 react-native-webrtc
进行一对一视频通话时,两个视频流之一会冻结或变黑。有没有办法检测何时以编程方式发生这种情况?提前致谢!
看起来每个视频轨道都有一个侦听器,一旦流冻结就会触发。
在 React Native 中它是 onmute
监听器:
stream.getVideoTracks().forEach(videoTrack => {
videoTrack.onmute = () => {
console.log("Frozen video stream detected!");
};
});
请注意,在 React Native 中使用此方法检测冻结流似乎仅适用于远程轨道!
为了检测流当前是否被冻结,我在视频轨道上使用 muted
属性:
console.log(videoTrack.muted); // true when frozen
另一种我发现但没有进一步探索的方法是 RTCPeerConnection 上的 getStats()
方法。它 returns 具有大量数据的承诺,可用于检测冻结的视频流,我想还有更多。