Ошибка 0xfffffc03: android.media.MediaCodec.error_neg_1021 в MediaCodec OMX.sprd.h264.encoder - PullRequest
0 голосов
/ 13 июня 2019

При вызове метода "configure" API-интерфейса mediacodec у меня есть следующее исключение:

android.media.MediaCodec$CodecException: Error 0xfffffc03
      at android.media.MediaCodec.native_configure(Native Method)
      at android.media.MediaCodec.configure(MediaCodec.java:577)
      at com.joiedurythme.utils.video.decoder.CutVideoTask.configureEncoder(CutVideoTask.java:231)
      at com.joiedurythme.utils.video.decoder.CutVideoTask.getEncoder(CutVideoTask.java:183)
      at com.joiedurythme.utils.video.decoder.CutVideoTask.prepare(CutVideoTask.java:149)
      at com.joiedurythme.utils.video.decoder.CutVideoTask.run(CutVideoTask.java:95)
      at com.joiedurythme.utils.video.decoder.CodecService.cutVideo(CodecService.java:71)
      at com.joiedurythme.views.player.controller.MediaPlayerController.createMediaFragments(MediaPlayerController.java:562)
      at com.joiedurythme.views.player.controller.MediaPlayerController.createNewFragments(MediaPlayerController.java:726)
      at com.joiedurythme.views.player.controller.MediaPlayerController.cutFragment(MediaPlayerController.java:394)
      at com.joiedurythme.views.player.ActionAreaIndexPlayer$1.onMenuItemClick(ActionAreaIndexPlayer.java:92)
      at android.widget.PopupMenu.onMenuItemSelected(PopupMenu.java:228)
      at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:801)
      at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:155)
      at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:954)
      at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:944)
      at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:411)
      at android.widget.AdapterView.performItemClick(AdapterView.java:340)
      at android.widget.AbsListView.performItemClick(AbsListView.java:1532)
      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3700)
      at android.widget.AbsListView$3.run(AbsListView.java:5684)
      at android.os.Handler.handleCallback(Handler.java:739)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:145)
      at android.app.ActivityThread.main(ActivityThread.java:6934)
      at java.lang.reflect.Method.invoke(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:372)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

Это исключение является CodecException с этой информацией:

I/buffers:  Erreur android.media.MediaCodec$CodecException: Error 0xfffffc03
I/CodecException:  e DiagnosticInfo android.media.MediaCodec.error_neg_1021
I/CodecException:  e Recoverable false
I/CodecException:  e Transient   false

Я не знаю, что означает android.media.MediaCodec.error_neg_1021.

Код, который вызывает метод настройки:

public MediaCodec configureEncoder(MediaFormat inputMediaFormat) throws IOException {
    final MediaCodec mediaCodecEncoder = MediaCodec.createEncoderByType(MIMETYPE_VIDEO_AVC);

    Log.i("buffers" , " encoder "+mediaCodecEncoder.getName());
    //final MediaCodec mediaCodecEncoder = MediaCodec.createByCodecName("OMX.qcom.video.encoder.avc");
    MediaFormat mediaFormatMp4a = getMediaFormat(inputMediaFormat);
    Log.i("buffers","encode : "+mediaCodecEncoder.getName() );
    Log.i("buffers","dstBuffer : "+mediaFormatMp4a.toString() );
    mediaCodecEncoder.reset();
    mediaCodecEncoder.configure(mediaFormatMp4a, null, null, CONFIGURE_FLAG_ENCODE);
    return mediaCodecEncoder;
}

Информация mediaFormatMp4a ниже

mediaFormatMp4a {высота = 1280, ширина = 720, битрейт = 600000, mime = видео / avc, частота кадров = 30, интервал i-frame = 1, формат цвета = 19}

Имя кодека: OMX.sprd.h264.encoder.

API Android Leve - 22, а мой телефон - Samsung Galaxy J3 (2016)

...