Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaRecorder预览显示黑屏_Android_Video_Surfaceview_Record_Mediarecorder - Fatal编程技术网

Android MediaRecorder预览显示黑屏

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

我试图从示例中记录MediaPipe的输出流。此示例使用SurfaceView(getHolder().getSurface())。 这个很好用。为了记录输出,我使用了MediaRecorder,而不是使用SurfaceView,我将Surface创建为

_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);

你找到解决办法了吗?