2016-12-11 8 views
0

У меня есть приложение, которое получает данные в виде байта из onPreviewFrame и переходит к моему кодеру, который является другим классом, реализующим медиакодек api для android, чтобы получить данные и сделать видеофайл. Он работает с файлом с форматом «видео/avc», но сбой «mpeg4» с показом ошибки потока. Что может быть причиной?Сбой приложения для Android при конвертировании с медиакодеком с форматированием MP4?

+0

показать код, а также опубликовать свой журнал cat –

+0

MediaFormat mediaFormat = MediaFormat.createVideoFormat («video/avc», 800, 480); // У меня проблема. "Видео/АВК" отлично работает, но видео/другое»создают проблемы // mediaFormat.setInteger (MediaFormat.KEY_BIT_RATE, 125000); mediaFormat.setInteger (MediaFormat.KEY_FRAME_RATE, 15); mediaFormat.setInteger (MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo .CodecCapabilities.COLOR_FormatYUV420Planar); mediaFormat.setInteger (MediaFormat.KEY_I_FRAME_INTERVAL, 5); mediaCodec.configure (mediaFormat, NULL, NULL, MediaCodec.CONFIGURE_FLAG_ENCODE); mediaCodec.start(); –

ответ

1

Изучите отличное объяснение на http://bigflake.com/mediacodec/. В частности, MediaCodec.createEncoderByType(MIME_TYPE) может генерировать исключение. Возможно, ваше устройство ожидает «video/mp4v-es» для видео в формате MPEG4.

Если возможно, предпочтительно использовать MediaCodec.findEncoderForFormat(MediaFormat).

+0

для "видео/AVC" App работы отлично подходит для Samsung Galaxy Note 3, но создайте проблему на Nexus 5, Galaxy s3 neo. Как я могу это исправить? Любая идея? Я изучаю ваш ресурс и пытаюсь его исправить. –

+0

Вот как он построен, к сожалению. тип, который гарантированно будет доступен для всех devi цы. –

+0

Есть ли другой API, который может поддерживать различные устройства? Есть ли API низкого уровня, который может поддерживать минимум API 14? –