Intereting Posts
Добавьте наш собственный пользовательский интерфейс в XML-файл вида android для Android Импорт android.support.v7 невозможен. Закончить дочернюю активность, когда родительская активность прекращается Проблемы с Studio Studio Rendering Проблема при вызове Activity из класса IntentService Нижнее поле или отступы не работают в относительной компоновке в xml на Android Какой из них использовать? JSONObject от org.json VS JsonObject от javax.json Действие не найдено для обработки Intent with action.DIAL Ошибка Android Studio: Ошибка: CreateProcess error = 216, эта версия% 1 несовместима с версией Windows, в которой вы работаете Как показать изображение в строке таблицы на основе размера Есть ли способ правильно загрузить результат загрузки с помощью HttpUrlConncetion Идентификатор устройства adroid Adroid Set Value to Enum – Java Eclipse: Где разместить ссылку NDK? Не существует национального развития? Отображать встроенные клавиши emoji для ввода метода

MediaCodec дает ошибку трассировки storeMetaDataInBuffers

Я получаю logcat следующую ошибку при кодировании через MediaCodec в Android.

Фактическая кодировка работает нормально, и результат получается правильно, поэтому я не могу понять, почему я получаю эту трассировку. Является ли это безобидной ошибкой, или что-то мне не хватает?

E / ACodec (6438): [OMX.qcom.video.encoder.h263] storeMetaDataInBuffers (выход) не удалось w / err -1010

Следующий код, где я получаю трассировку

final int BIT_RATE = 4000000; final int FRAME_RATE = 30; final int IFRAME_INTERVAL = 5; final String MIME_TYPE = "video/avc"; final MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, width, height); format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); format.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE); format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE); format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL); MediaCodec encoder = MediaCodec.createEncoderByType(MIME_TYPE); //--------------------------------- // NEXT LINE PRODUCES THE TRACE encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); //--------------------------------- 

Это безобидно, большинство устройств показывают это. См. Q12 по адресу http://bigflake.com/mediacodec/ .

Это говорит только о том, что первый способ кодирования сигнальной поверхности не поддерживался кодировщиком, поэтому он использовал некоторые другие способы его настройки. (Существует несколько способов для слоя MediaCodec / ACodec рассказать об этом отдельному кодеру.)

В предыдущем ответе было указано, что предупреждение совершенно безвредно. Некоторая дополнительная информация о log и причинах того же

Эта трассировка в журнале указывает на то, что encoder не поддерживает storeMetadataInBuffers на output порту. Для encoder этот режим может поддерживаться как на input и на output .

Этот режим используется для input порта для передачи данных необработанного изображения в формате metadata , т.е. передайте только ссылку на дескриптор gralloc который может использовать encoder для доступа к данным. Это используется camera и / или другими приложениями для screen recording для передачи ссылки на данные YUV на кодировщик.

Режим metadata был поддержан для output порта также для потенциальной инкапсуляции данных выходного bitstream . Например, когда сеанс Miracast или WiFi-Display активен, а кодируемые данные безопасны, как премиальный контент, становится необходимым защищать данные между encoder и модулем шифрования HDCP , в течение которого формат metadata становится удобным. Не так много encoder поддерживают этот режим, и, следовательно, вы наблюдаете это предупреждение.