Android MediaRecorder不录制视频,只录制音频

Android MediaRecorder不录制视频,只录制音频,android,audio,video,Android,Audio,Video,我的录像机应用程序不录制视频,它只录制扩展名为.mp4的音频。logcat中没有返回错误。所以,我不知道我的代码出了什么问题 有人知道这个问题吗?或者任何关于如何录制视频的建议 这是我的密码: public class VideoHolderCallback implements SurfaceHolder.Callback{ MediaRecorder recorder; ... public void configureRecorder(){ reco

我的录像机应用程序不录制视频,它只录制扩展名为.mp4的音频。logcat中没有返回错误。所以,我不知道我的代码出了什么问题

有人知道这个问题吗?或者任何关于如何录制视频的建议

这是我的密码:

public class VideoHolderCallback implements SurfaceHolder.Callback{
    MediaRecorder recorder;
    ...
    public void configureRecorder(){
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
        recorder.setOutputFile(filePath);
        recorder.setPreviewDisplay(holder.getSurface());
        recorder.prepare();
        recorder.start();
    }
    ...

}
“使用Android框架进行视频捕获需要仔细管理摄像头对象并与MediaRecorder类协调”

“与使用设备摄像头拍照不同,捕获视频需要非常特殊的调用顺序。您必须按照特定的执行顺序,才能使用应用程序成功准备和捕获视频,如下所述。”

请查看此处给出的说明和代码片段(同时确保您已完成)

还要确保您具有所需的清单声明

“使用Android框架进行视频捕获需要仔细管理摄像头对象,并与MediaRecorder类协调”

“与使用设备摄像头拍照不同,捕获视频需要非常特殊的调用顺序。您必须按照特定的执行顺序,才能使用应用程序成功准备和捕获视频,如下所述。”

请查看此处给出的说明和代码片段(同时确保您已完成)

还要确保您具有所需的清单声明

//试一下你的麦克风

 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

//试一下你的麦克风

 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

您应该按以下顺序进行尝试:

public class VideoHolderCallback implements SurfaceHolder.Callback{
MediaRecorder recorder;
...
public void configureRecorder(){

    if(camera == null) {
        camera = Camera.open();
        camera.unlock();
    }
    recorder.setCamera(camera);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
    recorder.setOutputFile(filePath);
    recorder.setPreviewDisplay(holder.getSurface());
    recorder.prepare();
}

这段代码应该适合您。请随意将AudioEncoder更改为AAC以外的其他版本,尽管它对于低kbps是最有效的。

您应该按以下顺序尝试:

public class VideoHolderCallback implements SurfaceHolder.Callback{
MediaRecorder recorder;
...
public void configureRecorder(){

    if(camera == null) {
        camera = Camera.open();
        camera.unlock();
    }
    recorder.setCamera(camera);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
    recorder.setOutputFile(filePath);
    recorder.setPreviewDisplay(holder.getSurface());
    recorder.prepare();
}

这段代码应该适合您。请随意将AudioEncoder更改为AAC以外的其他版本,尽管它对于低kbps来说是最有效的。

您在清单中添加了权限“android.permission.RECORD_AUDIO”,就像这样吗?是的,我在清单中拥有所有权限。嗨,我在另一台设备中尝试了我的代码,它可以工作。但不是在Superpad III(中国标签)中型号:MOMO15 Android版本:2.3.4您在清单中添加了权限“Android.permission.RECORD_AUDIO”,是吗?是的,我在清单中拥有所有权限。嗨,我在另一台设备中尝试了我的代码,它可以工作。但不在Superpad III(中国标签)中型号:MOMO15安卓版本:2.3.4