gpt4 book ai didi

android - MediaRecorder 启动失败 -19 和相机错误 100

转载 作者:太空狗 更新时间:2023-10-29 14:14:24 25 4
gpt4 key购买 nike

我正在开发一个录制视频的应用。

我在我的应用程序中得到了这段代码,它在 Nexus 4 和索尼爱立信 mini pro 上运行良好,但是当我在其他设备上测试时,比如 Archos 80G9 和 Jiayu G3ST,应用程序给了我以下错误

"MediaRecorder start failed -19"

或者有时

"camera error 100 ".

我尝试实现其他 stackoverflow 帖子中建议的一些更改,但错误仍然出现。

private boolean prepareVideoRecorder() {
/** ADDED Sony Ericsson Stoped */
try {
mCamera.setPreviewDisplay(null);
} catch (java.io.IOException ioe) {
Log.d(TAG,
"IOException nullifying preview display: "
+ ioe.getMessage());
}
mCamera.stopPreview();

mMediaRecorder = new MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);

// Step 2: Set sources
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
CameraBackFront cm = new CameraBackFront();
int id = cm.getBackCameraId();
if (qualityString().equalsIgnoreCase("Low")) {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_LOW));
} else if (qualityString().equalsIgnoreCase("High")) {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_HIGH));
} else if (qualityString().equalsIgnoreCase("480p")) {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_480P));
} else if (qualityString().equalsIgnoreCase("720p")) {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_720P));
} else if (qualityString().equalsIgnoreCase("1080p")) {
try {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_1080P));
} catch (Exception e) {
mMediaRecorder.setProfile(CamcorderProfile.get(id,
CamcorderProfile.QUALITY_HIGH));
}
} else {
mMediaRecorder.setProfile(CamcorderProfile.get(0,
CamcorderProfile.QUALITY_HIGH));
}

// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO)
.toString());
/** ADD FILE NAME */
addFileNameDB();
// Step 5: Set the preview output
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

// Step 6: Prepare configured MediaRecorder
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
Log.d(TAG,
"IllegalStateException preparing MediaRecorder: "
+ e.getMessage());
releaseMediaRecorder();
return false;
} catch (IOException e) {
Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}

return true;
}

我试过:

  • mediarecorder.start() 之前放一个 thread.sleep(1000); 但这会给我一个错误。
  • 将 Default CameraPreview 放入 development.android.com。
  • 我的应用与调整预览大小的自定义 CameraPreview 配合使用。
  • 我使用 CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P) 获取相机质量,因为这始终使用适用于手机的配置文件。

最佳答案

最后我用

解决了我的问题
...
releaseCamera();
if(prepareVideoRecorder){
...
}

在 prepareVideoRecorder() 之前。

并在 prepareVideoRecorder 中添加一个新的相机实例。

public void prepareVideoRecorder(){
mCamera = getCameraInstance();
...
}

有了这些我已经修复了:

  • MediaRecorder 启动失败 -19。
  • 相机错误 100(媒体服务器死机和相机死机)。

关于android - MediaRecorder 启动失败 -19 和相机错误 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23972016/

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