定义MediaCodec编码器,MediaMuxer或虚拟显示器的记录区域

时间:2014-11-25 11:38:04

标签: android mediacodec mediamuxer

我正在使用MediaCodec,MediaMuxer和VirtualDisplay在手机上录制事件,然后使用该数据创建一个mp4文件。

我希望用户能够定义应该记录屏幕的哪个部分,为此我可以为编码器设置MediaFormat的高度和宽度,但我似乎无法设置任何偏移所以我将始终从左上角录制。

有没有办法以聪明的方式做到这一点?

编辑: 以下是我用来设置内容以使内容更清晰的一些代码。

    MediaFormat encoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, ENCODER_WIDTH, ENCODER_HEIGHT);
    encoderFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, COLOR_FORMAT);
    encoderFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
    encoderFormat.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
    encoderFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);

    encoder = MediaCodec.createEncoderByType(MIME_TYPE);
    encoder.setCallback(new encoderCallback());
    encoder.configure(encoderFormat, null /* Surface */, null /* crypto */, MediaCodec.CONFIGURE_FLAG_ENCODE);

    inputSurface = encoder.createInputSurface();

    // Create a virtual mDisplay that will output to our encoder.
    mVirtualDisplay = mMediaProjection.createVirtualDisplay(NAME,
            VD_WIDTH, VD_HEIGHT, DENSITY, DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION, inputSurface, null /*Callback*/, null /*Handler*/);

0 个答案:

没有答案