Я столкнулся с проблемой с пакетом video_player Flutter при попытке воспроизвести видео на Android. Видеопроигрыватель не инициализируется из-за следующей ошибки:
Failed to initialize decoder: OMX.MTK.VIDEO.DECODER.AVC
W/MediaCodecRenderer( 1398): java.lang.IllegalArgumentException: start failed
W/MediaCodecRenderer( 1398): at android.media.MediaCodec.native_start(Native Method)
W/MediaCodecRenderer( 1398): at android.media.MediaCodec.start(MediaCodec.java:2131)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter$Factory.createAdapter(SynchronousMediaCodecAdapter.java:60)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.DefaultMediaCodecAdapterFactory.createAdapter(DefaultMediaCodecAdapterFactory.java:139)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1225)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1137)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:588)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1602)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1182)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:1042)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:860)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
W/MediaCodecRenderer( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
W/MediaCodecRenderer( 1398): at android.os.Handler.dispatchMessage(Handler.java:103)
W/MediaCodecRenderer( 1398): at android.os.Looper.loop(Looper.java:264)
W/MediaCodecRenderer( 1398): at android.os.HandlerThread.run(HandlerThread.java:67)
E/MediaCodecVideoRenderer( 1398): Video codec error
E/MediaCodecVideoRenderer( 1398): androidx.media3.exoplayer.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.MTK.VIDEO.DECODER.AVC, Format(1, null, null, video/avc, avc1.64001F, -1, null, [1280, 720, 29.975233, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1])
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1144)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:588)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1602)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1182)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:1042)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:860)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/MediaCodecVideoRenderer( 1398): at android.os.Handler.dispatchMessage(Handler.java:103)
E/MediaCodecVideoRenderer( 1398): at android.os.Looper.loop(Looper.java:264)
E/MediaCodecVideoRenderer( 1398): at android.os.HandlerThread.run(HandlerThread.java:67)
E/MediaCodecVideoRenderer( 1398): Caused by: java.lang.IllegalArgumentException: start failed
E/MediaCodecVideoRenderer( 1398): at android.media.MediaCodec.native_start(Native Method)
E/MediaCodecVideoRenderer( 1398): at android.media.MediaCodec.start(MediaCodec.java:2131)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter$Factory.createAdapter(SynchronousMediaCodecAdapter.java:60)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.DefaultMediaCodecAdapterFactory.createAdapter(DefaultMediaCodecAdapterFactory.java:139)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1225)
E/MediaCodecVideoRenderer( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1137)
E/MediaCodecVideoRenderer( 1398): ... 11 more
E/ExoPlayerImplInternal( 1398): Playback error
E/ExoPlayerImplInternal( 1398): androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001F, -1, null, [1280, 720, 29.975233, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1]), format_supported=YES
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:640)
E/ExoPlayerImplInternal( 1398): at android.os.Handler.dispatchMessage(Handler.java:103)
E/ExoPlayerImplInternal( 1398): at android.os.Looper.loop(Looper.java:264)
E/ExoPlayerImplInternal( 1398): at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal( 1398): Caused by: androidx.media3.exoplayer.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.MTK.VIDEO.DECODER.AVC, Format(1, null, null, video/avc, avc1.64001F, -1, null, [1280, 720, 29.975233, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1])
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1144)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:588)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1602)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1182)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:1042)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:860)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/ExoPlayerImplInternal( 1398): ... 3 more
E/ExoPlayerImplInternal( 1398): Caused by: java.lang.IllegalArgumentException: start failed
E/ExoPlayerImplInternal( 1398): at android.media.MediaCodec.native_start(Native Method)
E/ExoPlayerImplInternal( 1398): at android.media.MediaCodec.start(MediaCodec.java:2131)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter$Factory.createAdapter(SynchronousMediaCodecAdapter.java:60)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.DefaultMediaCodecAdapterFactory.createAdapter(DefaultMediaCodecAdapterFactory.java:139)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1225)
E/ExoPlayerImplInternal( 1398): at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1137)
E/ExoPlayerImplInternal( 1398): ... 11 more
Я подозреваю, что это как-то связано с тем, как видео декодируется MediaCodec на устройстве, особенно для H.264 (видео/avc). Эта ошибка указывает на проблему с кодеком или ограничение, специфичное для устройства. Код:
Вот код, который я использую:
disposeVideoPlayer() async { await _videoPlayerController.dispose(); log("Video Player Disposed"); } [/code] [b]Среда:[/b] [list] [*]Версия Flutter: 3.24.3 [*]Пакет video_player: последняя версия. [*]Устройство Android: набор микросхем MediaTek. [/list] [b]Шаги I' Пробовал:[/b] [list] [*]Протестировал разные URL-адреса видео. [*]Пробовал использовать формат HLS с VideoFormat.hls. [*]Удален formatHint, но проблема по-прежнему возникает. [/list] Кто-нибудь сталкивался с подобной проблемой с MediaCodec на Android ? Будем признательны за любые решения и обходные пути!
Я реализовал программу для воспроизведения RTSP-клиента с помощью ExoPlayer от Media3.
Я использовал пример кода Google без изменений, и программа, похоже, работала отлично.
Однако иногда воспроизведение видео останавливается и печатаются следующие...
Я пытаюсь воспроизвести файлы при загрузке из Telegram. Теперь файл, скачанный не полностью в папке temp, вообще не воспроизводится. Хотя файл загружен не полностью, если вы загрузите его в Windows и попытаетесь открыть, файл будет воспроизводиться....
Я использую Jetpack Compose и ExoPlayer для воспроизведения видеофайлов. Когда я перехожу к экрану воспроизведения, пользовательский интерфейс зависает во время инициализации/подготовки ExoPlayer. Я вижу лог, в нем много «пропущенных XXX кадров». Я...