Android 原生 webrtc:已连接后添加视频
Android native webrtc: add video after already connected
我已经在我的 Android 应用程序中成功 运行 WebRTC 一段时间了,使用 libjingle.so 和 PeerConnectionClient.java 等,来自 Google'代码库。但是,我现在 运行 遇到一个问题,即用户仅以音频方式启动连接(即音频通话),但随后又打开了视频。我这样扩充了 PeerConnectionClient 中现有的 setVideoEnabled():
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() 调用可以做到这一点,但也许我还遗漏了其他东西?
为避免在对等点之间建立外部通信机制,这将涉及第二个对等点回答可以添加新流,您始终可以从现有(但有时是空的)视频流开始。现在只需要在必要时(如果)用内容填充此流。
我已经在我的 Android 应用程序中成功 运行 WebRTC 一段时间了,使用 libjingle.so 和 PeerConnectionClient.java 等,来自 Google'代码库。但是,我现在 运行 遇到一个问题,即用户仅以音频方式启动连接(即音频通话),但随后又打开了视频。我这样扩充了 PeerConnectionClient 中现有的 setVideoEnabled():
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() 调用可以做到这一点,但也许我还遗漏了其他东西?
为避免在对等点之间建立外部通信机制,这将涉及第二个对等点回答可以添加新流,您始终可以从现有(但有时是空的)视频流开始。现在只需要在必要时(如果)用内容填充此流。