2

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 つの違いです。

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

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);

PS また、あまりにも呼び出しを省略してmRecorder.setProfile()、ログのプロファイルが変更されるかどうか、およびそれが機能するかどうかを確認することもできます。

于 2013-01-16T07:21:01.440 に答える