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

在android中录制视频时媒体播放器启动失败

黄向明
2023-03-14

我试着用媒体记录器在android中录制一段视频。当我试着用2.3.4版本的媒体记录器录制视频时,它在4.0及更高的版本下工作得很好,给出了启动失败异常-12。

这是我的媒体记录器代码。

            mrec.setCamera(camera);
        mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
        mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mrec.setVideoSize(getMaxSupportedVideoSize().width,
            getMaxSupportedVideoSize().height);

        mrec.setOutputFile(path + filename);
        mrec.setMaxDuration(30000);
        mrec.setPreviewDisplay(surfaceHolder.getSurface());

        mrec.prepare();
        mrec.start();

我得到的运行时异常是

01-21 12:58:16.459: E/MediaRecorder(2461): start failed: -12
01-21 12:58:16.469: W/System.err(2461): java.lang.RuntimeException: start failed.
01-21 12:58:16.469: W/System.err(2461):     at android.media.MediaRecorder.native_start(Native Method)
01-21 12:58:16.469: W/System.err(2461):     at android.media.MediaRecorder.start(MediaRecorder.java:603)
01-21 12:58:16.469: W/System.err(2461):     at com.roseenvy.ui.activities.VideoRecordActivity.startRecording(VideoRecordActivity.java:235)
01-21 12:58:16.469: W/System.err(2461):     at com.roseenvy.ui.activities.VideoRecordActivity.onClick(VideoRecordActivity.java:125)
01-21 12:58:16.469: W/System.err(2461):     at android.view.View.performClick(View.java:2485)
01-21 12:58:16.469: W/System.err(2461):     at android.view.View$PerformClick.run(View.java:9080)
01-21 12:58:16.469: W/System.err(2461):     at android.os.Handler.handleCallback(Handler.java:587)
01-21 12:58:16.469: W/System.err(2461):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-21 12:58:16.469: W/System.err(2461):     at android.os.Looper.loop(Looper.java:130)
01-21 12:58:16.469: W/System.err(2461):     at android.app.ActivityThread.main(ActivityThread.java:3737)
01-21 12:58:16.469: W/System.err(2461):     at java.lang.reflect.Method.invokeNative(Native Method)
01-21 12:58:16.469: W/System.err(2461):     at java.lang.reflect.Method.invoke(Method.java:507)
01-21 12:58:16.469: W/System.err(2461):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
01-21 12:58:16.469: W/System.err(2461):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:660)
01-21 12:58:16.469: W/System.err(2461):     at dalvik.system.NativeStart.main(Native Method)

请帮助我如何解决这个问题。

提前致谢

共有1个答案

申屠项明
2023-03-14
  The below code worked for me.      
public Size getMaxSupportedVideoSize() {
    int maximum = 0;
    int position = -1;
    for (int i = 0; i < sizes.size(); i++) {
        if (sizes.get(i).width > maximum) {
            maximum = sizes.get(i).width; // new maximum
            position = i;
        }
    }
    if (position == -1) {
        return null;
    }

    return sizes.get(position);

       }

        mrec = new MediaRecorder();
camera.unlock();
mrec.setCamera(camera);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
Size maxSupportedVideoSize = getMaxSupportedVideoSize();
if (maxSupportedVideoSize == null) {
    mrec.setVideoSize(480, 640);
} else {
    mrec.setVideoSize(maxSupportedVideoSize.width,
            maxSupportedVideoSize.height);
    System.out.println(maxSupportedVideoSize.width + " width");
    System.out.println(maxSupportedVideoSize.height + " height");
}
mrec.setOutputFile(path + filename);
mrec.setMaxDuration(30000);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
 类似资料:
  • 如果我在任何Android音乐播放器中播放音乐,然后用介绍视频启动我的应用程序(用MediaPlayer处理)音乐停止。我想避免(音乐继续播放),因为我的应用程序介绍视频本身没有声音。 当MediaPlayer启动它的内容时,是否可以避免获得音频焦点?(MediaPlayer.start()-->AudioManager为音乐播放器分派一个AudioFocusChange)

  • 大家好,我正在尝试使用两个独立的媒体播放器实例播放音频和视频文件。当我从一开始播放它时,它工作得很好。但当我寻找时,我可以看到音频和视频的延迟 这是我寻找音频和视频的代码 //sikAudio(msec); if(media播放器!=null) { // 没有直播流,如果(medialayer.get持续时间() }

  • 我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?

  • 我正在开发我的第一个Android应用程序。这是一个录音应用程序。我正在用MediaRecord录制语音,如下所示: 我有另一个活动回放这些录制的声音(文件)。在这个活动中,有一个包含我录制的声音的ListView。我想用手机上安装的任何音乐播放器播放声音。这里我的代码:(此代码的来源:https://stackoverflow.com/a/3367231/556169) 但我得到了“音乐播放器不

  • 我已经创建了一个android应用程序,使用媒体播放器播放文本到语音文件,但是如果其他音频/视频开始播放,那么我的音频也会播放,即同时播放两个音频。 有没有办法在开始另一个音频/视频之前停止第一个音频。 是否有任何广播接收器会在其他音频开始时被调用。 我用过- layer.play播放音频。 和暂停音频。 任何帮助都将不胜感激。

  • 问题内容: 我在android中实现了视频播放,这对android来说是全新的,这是我到目前为止收集的部分代码。 根据逻辑,它应该播放视频。不知道我在哪里做错了。 问题答案: