安卓:同时运行两个媒体录制器实例

6
我可以同时运行两个 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个回答

2
根据文档
除了占用内存和编解码器实例等不必要的资源外,如果不立即调用此方法释放MediaRecorder对象,则可能会导致移动设备持续耗电,并且如果设备上不支持相同编解码器的多个实例,则会导致其他应用程序的录制失败。即使支持相同编解码器的多个实例,同时使用不必要的多个实例时也可能出现一些性能下降。
我的失败尝试也没有任何结果。

我们能以任何方式检测到某个特定设备是否支持“同一编解码器的多个实例”吗? - Qadir Hussain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接