如何在Android中捕获视频?

Nik*_*lin 22 android video-capture

我想创建一个录像机,到目前为止还没有弄清楚如何设置参数,以成功通过MediaRecorder.prepare()方法.

执行以下方法

public void start() throws IOException{
    String state = android.os.Environment.getExternalStorageState();
    if(!state.equals(Environment.MEDIA_MOUNTED))
    {
        throw new IOException("SD card is not mounted. It is " + state + ".");
    }
    File directory = new File(path).getParentFile();
    if(!directory.exists() && !directory.mkdirs())
    {
        throw new IOException("Path to file could not be created.");
    }

    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
    recorder.setVideoFrameRate(15);
    recorder.setVideoSize(176, 144);
    recorder.setOutputFile(path);
    recorder.prepare();
    recorder.start();
    this.state = VideoRecorderState.STATE_RECORDING;
}
Run Code Online (Sandbox Code Playgroud)

它会在线上引发异常 recorder.prepare().

如何设置参数以便能够捕获视频?

BeM*_*ive 13

这是一个有效的片段:

m_recorder = new MediaRecorder();
m_recorder.setPreviewDisplay(m_BeMeSurface);
m_recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
m_recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
m_recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
m_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
m_recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
m_recorder.setMaxDuration((int) MAX_TIME); 
m_recorder.setOnInfoListener(m_BeMeSelf);
m_recorder.setVideoSize(320, 240); 
m_recorder.setVideoFrameRate(15); 
m_recorder.setOutputFile(m_path);

m_recorder.prepare();
m_recorder.start();
Run Code Online (Sandbox Code Playgroud)

最重要的是表面.你没有它,所以没有它就失败了.

问候

BeMeCollective


小智 5

我正在以下教程中回答这个问题:http: //integratingstuff.wordpress.com/2010/10/18/writing-code-that-c​​aptures-videos-on-android/

您的代码在prepare()上失败的原因是您没有设置所有必需的属性.例如,您还需要设置maxDuration.


Jos*_*ger 2

也许相机应用程序的源代码可以帮助您调试它。