【问题标题】:Android 4.1 MediaCodec supported resolutionsAndroid 4.1 MediaCodec 支持的分辨率
【发布时间】:2012-11-27 10:17:14
【问题描述】:

我正在尝试让 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(); 时收到 IllegalStateException。任何人有任何解释(甚至更好:修复)?

提前致谢!

【问题讨论】:

    标签: android video h.264 android-4.2-jelly-bean


    【解决方案1】:
    1. 试试CamcorderProfile API。与从中检索到的配置完全匹配的配置可能会起作用。

    2. 显然,在您的情况下,分辨率 和其他参数 的某种组合使其无法正常工作。我想知道是不是帧率? 25有点奇怪,试试29.97或30,或者15。我也想知道是不是比特率?分辨率太低了,试试500kbit/s。

    【讨论】:

    • 您的第二个提示成功了,谢谢!我现在遇到了色彩空间问题,但在提出任何问题之前,我将检查 CamcorderProfile API。非常感谢!
    • 我发布了关于该主题的另一个问题:stackoverflow.com/questions/13703596/…
    【解决方案2】:

    请查看以下链接:

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

    查看“视频编码建议”部分。这些值位于pixels 中,因此请确保设备分辨率支持这些值。

    【讨论】:

      【解决方案3】:

      我在使用 MediaRecorder 时遇到了同样的问题。

      您可以尝试使用 CamcorderProfile,但根据我的经验,它并不能保证稳定工作。 同样在 Android 2.* 中,您只能拥有两个 CamcorderProfile 配置文件。

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-29
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多