Определение области записи кодировщика MediaCodec, MediaMuxer или virtualdisplay

Я использую 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 ответов

Другие вопросы по тегам