MediaRecorder を使用して Android でビデオを録画するアプリケーションを構築しています。このアプリケーションは、ほとんどのハードウェア プラットフォームで完全に動作します。ただし、Pantech の Element タブレットは少し難しいことがわかりました。タブレットが Android 2.3.1 の場合、アプリケーションは MediaRecorder.start() でクラッシュしていました。そこで、タブレットを 4.0.4 にアップグレードしたところ、クラッシュしなくなりました。
ただし、ファイルが作成されるようになりましたが、作成されたファイルはタブレットや PC で開くことができません。コーデックに問題があることは間違いありませんが、Android でコーデックを指定するのは気が遠くなるような経験であることがわかりました。
MediaRecorder コードは次のとおりです。
mRecorder = 新しい 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_HIGH)); mRecorder.setOutputFile(fileToSave); mRecorder.setPreviewDisplay(mPreview.getHolder().getSurface()); mRecorder.prepare(); mRecorder.start(); //これは正常に呼び出されますが、1 秒後にクラッシュします
アプリケーションがビデオを録画したときの ADB ログは次のとおりです。
そして、Element のストック カムコーダー アプリがビデオを録画したときの ADB ログは次のとおりです。
したがって、これから収集できるのは、.start() を呼び出すと ERROR(0x80001009, 0) が発生し、OMX IL が状態 3にあるということだけです。
「レベル 17」と「レベル 19」が何を意味するのかわかりません、しかし、それは 2 つのログのもう 1 つの違いです。
どんな助けでも大歓迎です、ありがとう!