2

我正在尝试让 Android 4.1 的新低级媒体功能适用于华硕 Transformer TF300T 平板电脑上的 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();

在后一种情况下,我在调用mediaCodec.getInputBuffers();. 任何人有任何解释(甚至更好:修复)?

提前致谢!

4

3 回答 3

3
  1. 试试CamcorderProfile API。与从中检索到的配置之一完全匹配的配置可能会起作用。

  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 配置文件。

这些设置是特定于设备的,您可以通过实验方式获得适用于各种设备的最佳设置。

编辑:您也可以使用 H.263 而不是 H.264,对于您的情况,它应该可以工作。

于 2012-11-30T13:25:17.567 回答