Android音频录制工作但视频录制不?

时间:2011-12-27 15:45:17

标签: android video-capture

我有一个问题,

当我在程序中使用aurio录制时,它工作正常,但是当我尝试录制视频时,我的.3gp文件为空(0字节)。

你能告诉我为什么吗?

以下是我录制视频录制代码的一部分:

protected void startRecording() throws IOException 
{
    mrec = new MediaRecorder();  // Works well
    mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); //Works well
    mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //Works well with OutputFormat.THREE.GPP
    mrec.setVideoSize(100, 100);
    mrec.setVideoFrameRate(5);
    mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // Works well
    mrec.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    mrec.setOutputFile("/sdcard/test5.3gp");  //Works well with test5.mp4

    mrec.prepare(); // Works well for the audio recording
    mrec.start(); // Works well for the audio recording
}

2 个答案:

答案 0 :(得分:1)

视频录制结果并非那么简单。

首先,您需要解锁相机对象的手柄,然后将相机设置为刻录机。

mCameraDev.unlock();
mRecorder.setCamera(mCameraDev);

注意:您需要在致电setCamera之后和调用任何其他记录器API之前立即致电unlock,否则您最终会遇到非法状态异常。

接下来,您需要使用录像机设置预览显示表面。这基本上类似于录像机的视频输入,即预览表面中的任何视频数据,它被视为视频录制的输入。

mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

如果您需要有关如何在相机上进行预览的帮助,请查看link

不要单独设置格式,而是使用重新编码器上的getProfilesetProfile API。

最后一点,设置到录像机的视频分辨率需要与预览曲面的分辨率同步。如果您的预览曲面是VGA,请确保以VGA分辨率执行录制。

答案 1 :(得分:0)

对于编码(录制)视频,似乎仅支持H.263编解码器:http://developer.android.com/guide/appendix/media-formats.html