В настоящее время я работаю над записью видео с использованием 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 на максимально возможное разрешение, а во время выполнения я могу создавать несколько видео параллельно с разными разрешениями.