Android MediaRecorder预览显示黑屏
我试图从示例中记录MediaPipe的输出流。此示例使用SurfaceView(getHolder().getSurface())。 这个很好用。为了记录输出,我使用了MediaRecorder,而不是使用SurfaceView,我将Surface创建为Android MediaRecorder预览显示黑屏,android,video,surfaceview,record,mediarecorder,Android,Video,Surfaceview,Record,Mediarecorder,我试图从示例中记录MediaPipe的输出流。此示例使用SurfaceView(getHolder().getSurface())。 这个很好用。为了记录输出,我使用了MediaRecorder,而不是使用SurfaceView,我将Surface创建为 _mRecorderSurface = MediaCodec.createPersistentInputSurface(); 并将MediaPipe的输出设置为 processor.getVideoSurfaceOutput().setSur
_mRecorderSurface = MediaCodec.createPersistentInputSurface();
并将MediaPipe的输出设置为
processor.getVideoSurfaceOutput().setSurface(_mRecorderSurface);
这是我用作输入源的同一个曲面
_mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
_mMediaRecorder.setInputSurface(_mRecorderSurface);
有了这个,我的录音效果很好。我将SurfaceView设置为最初设置MediaPipe输出的预览显示
_mMediaRecorder.setPreviewDisplay(SurfaceView.getHolder().getSurface());
即使录音效果很好,我也可以播放视频,但我在预览屏幕上看到黑色输出。我尝试在不同的位置调用mediatype初始化,结果相同。预览总是黑色的。我还确认在MediaRecorder上调用prepare()之前调用了setPreviewDisplay。不确定它是否有用,但我的MediaRecorder的一些设置是
_mMediaRecorder.setOnInfoListener(null);
_mMediaRecorder.setOnErrorListener(null);
_mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
_mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
_mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
_mMediaRecorder.setAudioSamplingRate(44100);
_mMediaRecorder.setAudioEncodingBitRate(96000);
_mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
_mMediaRecorder.setVideoEncodingBitRate(12000000);
_mMediaRecorder.setVideoFrameRate(30);
你找到解决办法了吗?