Android原生webrtc:在已连接后添加视频
我已经在我的Android应用程序中成功运行WebRTC一段时间了,使用了谷歌代码库中的libjingle.so和PeerConnectionClient.java等。但是,我现在遇到了一个问题,即用户仅以音频方式启动连接(即音频呼叫),但随后切换视频。我扩充了PeerConnectionClient中现有的setVideoEnabled(),如下所示:Android原生webrtc:在已连接后添加视频,android,video,native,webrtc,Android,Video,Native,Webrtc,我已经在我的Android应用程序中成功运行WebRTC一段时间了,使用了谷歌代码库中的libjingle.so和PeerConnectionClient.java等。但是,我现在遇到了一个问题,即用户仅以音频方式启动连接(即音频呼叫),但随后切换视频。我扩充了PeerConnectionClient中现有的setVideoEnabled(),如下所示: public void setVideoEnabled(final boolean enable) { executor.execute(n
public void setVideoEnabled(final boolean enable) {
executor.execute(new Runnable() {
@Override
public void run() {
renderVideo = enable;
if (localVideoTrack != null) {
localVideoTrack.setEnabled(renderVideo);
} else {
if (renderVideo) {
//AC: create a video track
String cameraDeviceName = VideoCapturerAndroid.getDeviceName(0);
String frontCameraDeviceName =
VideoCapturerAndroid.getNameOfFrontFacingDevice();
if (numberOfCameras > 1 && frontCameraDeviceName != null) {
cameraDeviceName = frontCameraDeviceName;
}
Log.i(TAG, "Opening camera: " + cameraDeviceName);
videoCapturer = VideoCapturerAndroid.create(cameraDeviceName);
if (createVideoTrack(videoCapturer) != null) {
mediaStream.addTrack(localVideoTrack);
localVideoTrack.setEnabled(renderVideo);
peerConnection.addStream(mediaStream);
} else {
Log.d(TAG, "Local video track is still null");
}
} else {
Log.d(TAG, "Local video track is null");
}
}
if (remoteVideoTrack != null) {
remoteVideoTrack.setEnabled(renderVideo);
} else {
Log.d(TAG,"Remote video track is null");
}
}
});
}
这使我能够成功地看到设备摄像机的本地插页,但它不会将视频发送到删除客户端。我原以为peerConnection.addStream()调用可以做到这一点,但也许我遗漏了其他东西?为了避免在对等点之间建立外部通信机制,该机制将涉及第二个对等点的答案,即可以添加新的流,您可以始终从现有(但有时是空的)视频流开始。现在只需在必要时(如果需要)用内容填充此流。请参阅。TL;NR:您需要一个外部对等方之间的通信机制,该机制将涉及来自第二个对等方的答案,该答案可以添加新的流。另一种方法是从现有(但为空)视频流开始。现在,在必要的时候(如果需要的话)用内容填充这个流会更容易。是的,我想你的第二个选择就是我要做的。由于我们的外部通信机制存在问题,这种策略在过去的尝试中不起作用,但现在已经解决了这个问题,空视频解决方案可以工作,并且比尝试重新协商连接要简单得多。谢谢@synthcat您有可用的示例代码吗?我正试图在连接过程中添加跟踪。你能把你的答案贴出来吗?那真的很有帮助。你能发布任何参考资料或代码以便对我们有所帮助吗?@VijayE,对不起,我现在手头没有这样的代码。也许TS还有样品。