2

Android4.1の新しい低レベルメディア機能をAsusTransformerTF300TタブレットのH.264エンコーディングで機能させようとしています。コーデックの解像度を上げようとすると、奇妙な動作が発生します。

        MediaFormat mediaFormat = MediaFormat.
                                createVideoFormat("video/mp4v-es", 320, 240); // WORKS
//      MediaFormat mediaFormat = MediaFormat.
//                              createVideoFormat("video/mp4v-es", 640, 480); // DOESN'T WORK

        mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000);
        mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 25);
        mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar);
        mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
        mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
        mediaCodec.start();

後者の場合、を呼び出すとIllegalStateExceptionが発生しmediaCodec.getInputBuffers();ます。説明がある人はいますか(またはさらに良い:修正)?

前もって感謝します!

4

3 に答える 3

3
  1. CamcorderProfileAPIを試してください。そこから取得した構成の1つと完全に一致する構成が機能する可能性があります。

  2. 明らかにあなたの場合、それを機能させない解像度と他のパラメータのいくつかの組み合わせがあります。フレームレートなのかしら?25は少し奇妙です。29.97または30、あるいは15を試してください。ビットレートかどうかもわかりますか?解像度には低すぎます。500kbit/sを試してください。

于 2012-11-30T13:07:02.273 に答える
2

以下のリンクをチェックアウトしてください:

http://developer.android.com/guide/appendix/media-formats.html

「ビデオエンコーディングの推奨事項」のセクションを確認してください。値が含まれpixelsているので、値がデバイスの解像度でサポートされていることを確認してください。

于 2012-11-27T10:54:55.953 に答える
1

MediaRecorderを使用したときも、同じ問題が発生しました。

CamcorderProfileの使用を試みることはできますが、私の経験から、安定した動作を保証するものではありません。また、Android 2. *では、CamcorderProfileのプロファイルを2つだけ持つことができます。

これらの設定はデバイス固有であり、実験的な方法でさまざまなデバイスに最適なものを取得できます。

編集:また、H.264の代わりにH.263を使用することもできます。あなたの場合、それは機能するはずです。

于 2012-11-30T13:25:17.567 に答える