Android:同时有两个Media recorder实例

时间:2013-04-22 06:27:39

标签: android multithreading record mediarecorder

我可以同时运行两个Android MediaRecorder类实例吗?例如

public MediaRecorder mrec1 ;
public MediaRecorder mrec2 ;


mrec1.setCamera(mCamera);
mrec1.setPreviewDisplay(surfaceHolder.getSurface());
mrec1.setVideoSource(MediaRecorder.VideoSource.CAMERA)
.
.
.
.
mrec2.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec2.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mrec2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
.
.  
.
.
mrec1.prepare();
mrec2.prepare();
mrec1.start();
mrec2.start();

我调用第二个start()时出现此错误我只是想知道它是因为已经调用了启动进程或存在其他一些问题。第二个媒体记录器实例也被初始化并在一个单独的线程中使用。

04-22 11:08:45.869: E/MediaRecorder(7742): start failed: -2147483648
04-22 11:08:45.869: W/dalvikvm(7742): threadid=9: thread exiting with uncaught exception  (group=0x40018578)
04-22 11:08:45.869: E/AndroidRuntime(7742): FATAL EXCEPTION: Thread-10
04-22 11:08:45.869: E/AndroidRuntime(7742): java.lang.RuntimeException: start failed.

1 个答案:

答案 0 :(得分:2)

根据documentation

  

除了不必要的资源(例如内存和实例)   正在举行,如果a,则无法立即调用此方法   不再需要MediaRecorder对象也可能导致连续   移动设备的电池消耗,和录制失败   其他应用程序如果没有相同编解码器的多个实例   在设备上支持。即使是相同编解码器的多个实例   如果支持,可能会出现一些性能下降   不必要的多个实例同时使用。

我的失败尝试也没有导致任何结果。