首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaRecorder不录制视频,只录制音频

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

Stack Overflow用户
提问于 2012-03-20 15:56:33
回答 3查看 3.2K关注 0票数 1

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

有人知道这个问题吗?或者关于使用什么来录制视频的任何建议。

下面是我的代码:

代码语言:javascript
复制
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();
    }
    ...

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-20 16:13:01

“使用安卓框架捕获视频需要仔细管理Camera对象并与MediaRecorder类进行协调。”

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

请看这里给出的说明和代码片段(也要确保你有) http://developer.android.com/guide/topics/media/camera.html#capture-video

还要确保您拥有所需的清单声明http://developer.android.com/guide/topics/media/camera.html#manifest

票数 3
EN

Stack Overflow用户

发布于 2012-06-08 14:01:21

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

代码语言:javascript
复制
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是最有效的。

票数 2
EN

Stack Overflow用户

发布于 2012-03-20 16:17:40

//尝试使用麦克风一次

代码语言:javascript
复制
 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

refer here:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9783149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档