请原谅我,如果已经问过这个问题,我找不到我的案子的答案。
所以,我有一个具有语音和视频通话功能的Android应用。我为此使用了webRTC。
我能够在一个Activity中使语音和视频通话均正常运行,但是现在我想让通话保持运行状态,同时用户退出CallActivity并返回到ChatActivity(例如,发送文件/链接/照片)。
我设法使语音通话在后台服务中完美运行,但视频通话无法正常工作。
即使正在播放视频轨道中的音频,也不会显示远程视频。
这是我的后台服务代码:
@Override
public void onAddStream(MediaStream mediaStream) {
if (mediaStream.videoTracks.size() > Constants.ONE || mediaStream.audioTracks.size() > Constants.ONE) {
return;
}
//check for video track, means this is a video call
if (!isAudioCall && mediaStream.videoTracks.size() > Constants.ZERO) {
remoteVideoTrack = mediaStream.videoTracks.get(Constants.ZERO);
CallActivityNew.remoteVideoTrack = remoteVideoTrack;
try {
localAudioTrack.setEnabled(true);
//Now ask the UI to display the video track
sendOrderToActivity(Constants.START_REMOTE_VIDEO, null);
} catch (Exception ignored) {}
} else if (mediaStream.audioTracks.size() > Constants.ZERO) {
//Means this is a Voice call, only audio tracks available
remoteAudioTrack = mediaStream.audioTracks.get(Constants.ZERO);
try {
localAudioTrack.setEnabled(true);
remoteAudioTrack.setEnabled(true);
} catch (Exception ignored) {}
}
}
以及我的CallActivity代码下面:
case Constants.START_REMOTE_VIDEO: {
if (remoteVideoView == null) {
remoteVideoView = findViewById(R.id.remote_gl_surface_view);
}
remoteVideoView.init(eglBaseContext, null);
remoteVideoView.setEnableHardwareScaler(true);
remoteVideoView.setMirror(true);
remoteVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
remoteVideoView.setZOrderMediaOverlay(true);
//Apply video track to the Surface View in order to display it
remoteVideoTrack.addSink(remoteVideoView);
//now enable local video track
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//now enable local video track
remoteVideoTrack.setEnabled(true);
}
}, Constants.TIME_THREE_HUNDRED_MILLIS);
setSpeakerphoneOn(false);
break;
}
我收到来自服务的订单后,正在从服务向活动发送订单,“大小写常量。START_REMOTE_VIDEO”工作。
我看不出问题出在哪里,为什么我只能听到声音,但是远程视频却无法开始显示!!
谢谢您的帮助。
[经过长时间的测试,我发现我的代码工作正常,只是忘记将视图可见性从"GONE"
更改为"VISIBLE"
。是的,这就是解决方案,我发誓xD