打开前置摄像头,开始视频通话。之后,我想在通话期间记录正面摄像头。
媒体记录器设置
mediaRecorder?.apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setVideoSource(MediaRecorder.VideoSource.SURFACE)
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setOutputFile(nextVideoAbsolutePath)
setVideoEncodingBitRate(10000000)
setVideoFrameRate(30)
setVideoSize(videoSize.width, videoSize.height)
setVideoEncoder(MediaRecorder.VideoEncoder.H264)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
prepare()
}
通常是这样的
// Set up Surface for camera preview and MediaRecorder
val callSurface = localSurfaceView.holder.surface
val recorderSurface = mediaRecorder!!.surface
val surfaces = ArrayList<Surface>().apply {
add(callSurface)
add(recorderSurface)
}
cameraDevice!!.createCaptureRequest(TEMPLATE_RECORD).apply {
addTarget(callSurface)
addTarget(recorderSurface)
}
cameraDevice?.createCaptureSession(surfaces, StateCallback)
问题是我正在使用WebRTC库打开相机。因此,我无权访问cameraManager.openCamera()方法,这通常是您检索CameraDevice实例的方式。
因此,如何检索已经打开的CameraDevice的实例?如果我有此对象,则可以继续进行录制。
[在大多数智能手机或设备中,没有足够的硬件资源来一次运行两个摄像头,因此尝试打开第二个摄像头通常会出错。相机API
可以使用。
[相机功能]的ICS SDK
中似乎确实有更多文档,但是我可以直接找到2相机1设备问题的答案...