Какие форматы цветов поддерживаются большинством / всеми MediaCodec телефонов Android? - PullRequest
0 голосов
/ 17 июня 2019

Я пишу код для создания видеофайлов, используя Android MediaCodec, например:

MediaCodec videoCodec = MediaCodec.createEncoderByType("video/avc");
MediaFormat videoFormat = MediaFormat.createVideoFormat("video/avc", width, height);
videoFormat.setInteger(KEY_BIT_RATE, BIT_RATE);
videoFormat.setInteger(KEY_FRAME_RATE, this.frameRate);
videoFormat.setInteger(KEY_I_FRAME_INTERVAL, I_FRAME_INTERVAL);

// Which color formats are supported?
videoFormat.setInteger(KEY_COLOR_FORMAT, colorFormat);

videoCodec.configure(videoFormat, null, null, CONFIGURE_FLAG_ENCODE);
videoCodec.start();

Разные устройства поддерживают разные KEY_COLOR_FORMAT, я могу запросить его с кодом:

int[] supportedFormats = videoCodec.getCodecInfo().getCapabilitiesForType("video/avc").colorFormats;

При наличии нескольких телефонов Android, которые у меня есть, все, кроме одного, поддерживают COLOR_FormatYUV420SemiPlanar, а один поддерживает COLOR_FormatYUV420Planar, но форматы ARGB8888 поддерживаются не всеми из них.

Какие цветовые форматы мне следует рассмотреть, чтобы охватить большинство телефонов Android?

Или, может быть, есть библиотека с открытым исходным кодом для преобразования растровых изображений в различные цветовые форматы?

...