我们正在构建一个使用 MediaRecorder 在 Android 上录制视频的应用程序,它可以在大多数硬件平台上完美运行。然而,Pantech 的 Element 平板电脑已被证明是一个挑战。当平板电脑在 Android 2.3.1 上时,应用程序在 MediaRecorder.start() 上崩溃。所以我们将平板电脑升级到 4.0.4,它停止了崩溃。
但是,现在它创建了文件,但创建的文件无法通过平板电脑或 PC 打开。我很确定存在编解码器问题,但我发现在 Android 上指定编解码器是一种令人抓狂的体验。
这是我们的 MediaRecorder 代码:
mRecorder = new MediaRecorder();
mCamera = Camera.open();
mCamera.unlock();
mRecorder.setCamera(mCamera); mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIG H)); mRecorder.setOutputFile(fileToSave); mRecorder.setPreviewDisplay(mPreview.getHolder().getSurface()); mRecorder.prepare(); mRecorder.start(); //这调用很好,但一秒钟后崩溃
这是我们的应用程序录制视频时的 ADB 日志:
这是 Element 上的摄像机应用程序录制视频时的 ADB 日志:
所以我可以从中收集到的是,当我们调用 .start() 时,我们得到一个 ERROR(0x80001009, 0) 并且 OMX IL 处于状态 3。
我不确定“17 级”与“19 级”是什么意思,但这是两个日志之间的另一个区别。
非常感谢任何帮助,谢谢!