我有一个问题,
当我在程序中使用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
}
答案 0 :(得分:1)
视频录制结果并非那么简单。
首先,您需要解锁相机对象的手柄,然后将相机设置为刻录机。
mCameraDev.unlock();
mRecorder.setCamera(mCameraDev);
注意:您需要在致电setCamera
之后和调用任何其他记录器API之前立即致电unlock
,否则您最终会遇到非法状态异常。
接下来,您需要使用录像机设置预览显示表面。这基本上类似于录像机的视频输入,即预览表面中的任何视频数据,它被视为视频录制的输入。
mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
如果您需要有关如何在相机上进行预览的帮助,请查看link。
不要单独设置格式,而是使用重新编码器上的getProfile
和setProfile
API。
最后一点,设置到录像机的视频分辨率需要与预览曲面的分辨率同步。如果您的预览曲面是VGA,请确保以VGA分辨率执行录制。
答案 1 :(得分:0)
对于编码(录制)视频,似乎仅支持H.263编解码器:http://developer.android.com/guide/appendix/media-formats.html