android - 在 android 媒体记录器中预览显示

标签 android surfaceview android-mediarecorder

在 android 中如何在媒体记录器启动之前显示预览界面。 我的应用程序具有视频录制功能,当我导航到视频录制 fragment 时它显示黑屏,当我使用开始按钮开始录制时显示相机预览并开始录制。

如何在录制前开始预览。 我添加了在 fragment 的 onCreateView() 中使用的代码-

surfaceHolder = mySurfaceView.getHolder();
camera = Camera.open();
if(camera!=null){
    camera.setDisplayOrientation(90);
    Camera.Parameters param;
    param = camera.getParameters();
    param.setPreviewFrameRate(20);
    param.setPreviewSize(176, 144);
    camera.setParameters(param);
    camera.setPreviewDisplay(surfaceHolder);
}

mediaRecorder = new MediaRecorder();
camera.unlock();
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setProfile(camcorderProfile_HQ);
String filePath = getOutputMediaFile(MEDIA_TYPE_VIDEO).getPath();
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
mediaRecorder.setOutputFile(filePath);

以及我在开始按钮点击时使用的代码-

mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.prepare();
mediaRecorder.start();

所以我可以使用上面的代码重新编码视频,但无法在录制开始前显示预览。 请在我遗漏的地方帮助我。因为在重新编码视频之前显示黑屏。

提前致谢。

最佳答案

public void surfaceCreated(SurfaceHolder holder) {
        if (mCamera != null) {
            Parameters params = mCamera.getParameters();
            mCamera.setParameters(params);
            try {
                //mCamera.setDisplayOrientation(90);
                mCamera.setPreviewDisplay(holder);
            } catch (IOException e) {
                e.printStackTrace();
            }
            mCamera.startPreview();
        }
    }

如果您实现 SurfaceHolder.Callback,请像这样覆盖 surfaceCreated 方法。这对我有用。

关于android - 在 android 媒体记录器中预览显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19176663/

相关文章:

android - 与 Nvidia Tegra profiler 2.0 兼容的移动设备

Android:由于 Facebook 登录,应用程序在启动时崩溃?

android - Flutter:热重载后出现 "Lost connection to device"错误

android - 为什么纹理 View 中的相机预览比表面 View 中的相机预览模糊得多?

安卓开发工具包。 MediaPlayer 可以访问文件作为 MediaRecorder 记录吗

android - 错误 :Lambda coming from jar file need their interfaces on the classpath to be compiled, 未知接口(interface)是 java.util.function.Function

android - 关闭 UI 线程运行 SurfaceView

java - Android NDK多线程 block UI响应

Android SurfaceView 为空

java - 无法使用 MediaRecorder 记录通话