我正在开发一个Android视频 - 音频通话应用程序,到目前为止我已经完成了主要功能,它工作正常我没问题:语音通话,视频通话。我的问题是,当我按下主页按钮时(视频因任何原因被中断)我再也无法取回它, 奇怪的是,我可以用声音做我需要的事情;当应用程序在后台并停止语音时继续,但遗憾的是我根本无法控制视频。我认为创建与视频相关的webRTC内容存在问题,因此以下是负责该代码的代码:
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
.builder(this)
.setEnableVideoHwAcceleration(true)
.createInitializationOptions());
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
DefaultVideoEncoderFactory defaultVideoEncoderFactory = new DefaultVideoEncoderFactory(rootEglBase.getEglBaseContext(), true, true);
DefaultVideoDecoderFactory defaultVideoDecoderFactory = new DefaultVideoDecoderFactory(rootEglBase.getEglBaseContext());
peerConnectionFactory = new PeerConnectionFactory(options, defaultVideoEncoderFactory,defaultVideoDecoderFactory);
videoCapturerAndroid = createCameraCapturer(new Camera1Enumerator(false));
audioConstraints = new MediaConstraints();
videoConstraints = new MediaConstraints();
//Create a VideoSource instance
videoSource = peerConnectionFactory.createVideoSource(videoCapturerAndroid);
localVideoTrack = peerConnectionFactory.createVideoTrack("100", videoSource);
//create an AudioSource instance
audioSource = peerConnectionFactory.createAudioSource(audioConstraints);
localAudioTrack = peerConnectionFactory.createAudioTrack("101", audioSource);
videoCapturerAndroid.startCapture(1024, 720, 30);
localVideoView.setVisibility(View.VISIBLE);
//create a videoRenderer based on SurfaceViewRenderer instance
localRenderer = new VideoRenderer(localVideoView);
localVideoTrack.addRenderer(localRenderer);
gotUserMedia = true;
我将在需要时更新问题(即需要一些其他代码片段)。 请帮助,我一直试图解决这个问题大约一个星期,我取得的唯一进展是学习如何控制声音:)提前感谢你
答案 0 :(得分:1)
我花了更多的时间来做这件事,最后它起作用了,这就是我做的:
我在打开应用程序后尝试检查onResume()中的流是否为null 再次从睡眠状态(睡眠意味着单击主页按钮)但它不是空的。之后我决定看看如果我再次在onResume()中显示流会发生什么(但我需要在显示它之前检查它是否为null因为它在我第一次打开应用程序时将为null)。这就是我必须要做的再次重复使用视频流,实际上这让我可以翻转相机(正面和背面)之前我无法做到这一点。