当前位置: 首页 > 知识库问答 >
问题:

MediaCorder启动失败-19和摄像机错误100

南宫俊逸
2023-03-14

我正在开发一个应用程序来录制视频。

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

“MediaRecorder启动失败-19”

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;
}

我试过:

  • mediaCorder.start()之前放置thread.sleep(1000);但这会给我一个错误。
  • 在development.android.com中放置默认的CameraPreview。
  • 我的应用程序与自定义CameraPreview一起工作,该CameraPreview可调整预览的大小。
  • 我使用camcorderprofile.hasprofile(camcorderprofile.quality_720p)获取相机质量,因为这总是使用在电话上工作的配置文件。

共有1个答案

祁承嗣
2023-03-14

最后我解决了我的问题

...
releaseCamera();
if(prepareVideoRecorder){
   ...
}

prepareVideoRecorder()之前。

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

public void prepareVideoRecorder(){
   mCamera = getCameraInstance();
   ...
}
    null
 类似资料:
  • 问题内容: 我的媒体录制出现问题。我正在尝试使用前置摄像头进行记录。这给我一个错误(但预览正常)。每当我使用后置摄像头时,一切正常,我觉得这很奇怪。可能是什么问题,可能是解决方案?我的代码和错误如下所示。 编辑。使用VGA前置摄像头录制似乎不起作用。这怎么可能?虽然可以使用HTC camera应用程序进行录制。 预先感谢您。 行添加到清单: 错误日志: 问题答案: 找到了解决方案。由于我使用的是前

  • 我正在工作的视频录制应用程序,在其中我想显示预览,当用户点击记录按钮,它开始录制,当用户点击停止按钮,它停止录制。 我有视频预览在我的表面,但当我按下开始按钮,它崩溃的错误“Media.Recorder.start(本机方法)。这是我的代码,请帮助我的家伙。

  • 错误:无法启动连接:错误:WebSocket无法连接。在服务器上找不到连接,endpoint可能不是信号器endpoint,服务器上不存在连接ID,或者存在阻止WebSocket的代理。如果有多台服务器,请检查是否启用了粘性会话。 WebSocketTransport.js:49WebSocket连接到“ws://xxxxxx/生产/网络服务/集线器/spreadhub”失败: Angular.t

  • 我正在使用NetBeans 8.0.2(也在最新的夜间版本中尝试过),并试图在端口8084上启动TomEE Plume服务器(也在不同的端口上尝试过)。服务器启动和工作正常,但NetBeans认为它没有启动,在大约2分钟的等待(“等待Tomcat”)后,抛出一个错误窗口“Tomcat失败启动”或类似的东西。 有些问题与我的问题相似,不同的是我完全没有错误,只有“Tomcat失败启动”窗口,所以我甚

  • 我目前有一个游戏,有一个地图是480x3200,一个人从顶部掉下来。镜头跟在人的后面,随着人的下落有平台。平台需要是可触摸的,所以我可以在游戏中旋转和移动它们,所以我把它变成了一个图像,而它原本只是一个精灵。 编辑:

  • 我尝试用python和C++实现代码,结果相同。还尝试另存为。png而不是。jpg。rtsp feed在使用imshow显示相机时工作正常,只有在试图保存帧时才会出现问题。据我所知,这些错误都与ffmpeg有关,但是google对这些类型的错误帮助不大。