如何为Pantech Element指定正确的编解码器?

时间:2013-01-08 13:18:28

标签: android codec mediarecorder android-mediarecorder

我们正在构建一个使用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日志: enter image description here

当元素上的库存摄像机应用记录视频时,这是ADB日志: enter image description here

所以我可以从中收集到的是,当我们调用.start()时,我们得到一个ERROR(0x80001009,0)并且OMX IL处于状态3。 我不确定“17级”与“19级”的含义是什么,但这是两个日志之间的另一个区别。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

我认为配置文件/级别是指H.264配置文件和级别(虽然不是它们通常编码的方式:常见的H.264级别为3.2,4.1,通常编码为32,41;然后17是??) 。如果为true,那么它会受到您给mediarecorder的其他设置的影响,特别是分辨率,比特率和fps。

mMediaRecorder.setVideoFrameRate(mFPS);
mMediaRecorder.setVideoEncodingBitRate(mBitrate);
mMediaRecorder.setVideoSize(mWidth, mHeight);

我还注意到你从未设置输出格式。试试这个:

mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

P.S。您也可以尝试省略对mRecorder.setProfile()的调用,看看日志中的个人资料是否发生变化,以及是否有效。