gpt4 book ai didi

android - MediaRecorder setVideoSize 在不同设备中显示不同的行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:34 24 4
gpt4 key购买 nike

我正在使用媒体录像机在 Android 应用程序中录制视频。

mMediaRecorder.setCamera(mServiceCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);

//mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);

mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
String file_name = Environment.getExternalStorageDirectory().getPath() +"/myVideo.mp4";
mMediaRecorder.setOutputFile(file_name);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.prepare();
mMediaRecorder.start();

问题出在线路上

 mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);

在 HTC 和 Xperia 中,setVideoSize 工作正常(仅当我不评论此行时才会工作)。但是在 Nexus 和 Note 中,setVideoSize 将不起作用(只有当我注释掉这一行时才会起作用)。

我应该怎么做才能让应用程序在所有这些设备上正确运行??

最佳答案

您需要了解预览和实际捕获的视频是两个不同的东西,同样预览尺寸和视频尺寸是两个不同的参数。您在取景器中看到的本质上是预览,而不是实际记录的内容。

  1. 启动相机时,您可以为相机设置预览大小。但是您必须查询支持的预览尺寸,并且应该在其中设置一个。

    相机相机 = camera.open();列出 psizes = camera.getParameters() .getSupportedPreviewSizes();

  2. 设置预览后,您可以使用 MediaRecorder 开始录制,视频大小可以设置为媒体录制器,这是将捕获的视频的实际大小。同样,您应该设置支持的视频大小之一。

    列表大小 = camera.getParameters() .getSupportedVideoSizes();

然后,您可以将其中之一设置为媒体记录器

mediaRecorder.setVideoSize(videoWidth, videoHeight);

因此,请记住始终检查支持的尺寸,否则您一定会遇到应用程序崩溃。

关于android - MediaRecorder setVideoSize 在不同设备中显示不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com