Как изменить разрешение на MediaMuxer android - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время я работаю над записью видео с использованием MediaCode c и MediaMuxer, поскольку мне нужно, чтобы кадры рекордера использовались в нескольких местах.

Текущее поведение : Медиа-код c - это настроен с разрешением 720x1280 и добавлена ​​дорожка мультимедийного мультиплексора из кода мультимедиа c, поэтому видеовыход также имеет такое же разрешение 720x1280.

Создание формата мультимедиа

MediaFormat mVideoFormat = MediaFormat.createVideoFormat(VIDEO_MIME_TYPE, 720, 1280);
    mVideoFormat.setInteger(MediaFormat.KEY_BIT_RATE, 1024*1024);
    mVideoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
    mVideoFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 3);
    mVideoFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);

Создание код c из медиа-формата

 mMediaCodec = MediaCodec.createByCodecName(videoCodecInfo.getName());
        mMediaCodec.setVideoScalingMode(MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
        mMediaCodec.configure(mVideoFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
        mInputSurface = mMediaCodec.createInputSurface();

И добавление дорожки мультиплексора из

if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
            MediaFormat mediaFormat = mMediaCodec.getOutputFormat();
            mTrackIndex = mMediaMuxer.addVideoTrack(mediaFormat);
            mMediaMuxer.start();
        }

Ожидаемый вывод Я всегда хочу, чтобы медиа-код c работал на 720x1280, но я хочу, чтобы мультимедийный мультиплексор записывал видео с другим разрешением, например, 720x1280 или любым другим разрешением, которое ниже его.

Над всей целью, которую я хочу достичь, я могу настроить MediaCode c на максимально возможное разрешение, а во время выполнения я могу создавать несколько видео параллельно с разными разрешениями.

...