Я пишу код для создания видеофайлов, используя 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?
Или, может быть, есть библиотека с открытым исходным кодом для преобразования растровых изображений в различные цветовые форматы?