flutter使用video_player播放网络视频报错

W/ACodec  (31850): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 19 failed: -1010
W/ACodec  (31850): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 18 failed: -1010
W/ACodec  (31850): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 17 failed: -1010
W/ACodec  (31850): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -1010
E/ACodec  (31850): Failed to allocate output port buffers after port reconfiguration: (-1010)
E/ACodec  (31850): signalError(omxError 0x80001001, internalError -1010)
E/ACodec  (31850): Error occurred while disabling the output port
E/MediaCodec(31850): Codec reported err 0xfffffc0e, actionCode 0, while in state 6
D/SurfaceUtils(31850): disconnecting from surface 0x71aa4f1010, reason disconnectFromSurface
E/MediaCodecVideoRenderer(31850): Video codec error
E/MediaCodecVideoRenderer(31850):   java.lang.IllegalStateException
E/MediaCodecVideoRenderer(31850):       at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
E/MediaCodecVideoRenderer(31850):       at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:108)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1994)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:873)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/MediaCodecVideoRenderer(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/MediaCodecVideoRenderer(31850):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/MediaCodecVideoRenderer(31850):       at android.os.Looper.loop(Looper.java:219)
E/MediaCodecVideoRenderer(31850):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(31850): Playback error
E/ExoPlayerImplInternal(31850):   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(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:640)
E/ExoPlayerImplInternal(31850):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/ExoPlayerImplInternal(31850):       at android.os.Looper.loop(Looper.java:219)
E/ExoPlayerImplInternal(31850):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(31850):   Caused by: androidx.media3.exoplayer.video.MediaCodecVideoDecoderException: Decoder failed: OMX.hisi.video.decoder.avc
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1982)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:893)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/ExoPlayerImplInternal(31850):       ... 3 more
E/ExoPlayerImplInternal(31850):   Caused by: java.lang.IllegalStateException
E/ExoPlayerImplInternal(31850):       at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
E/ExoPlayerImplInternal(31850):       at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:108)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1994)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:873)
E/ExoPlayerImplInternal(31850):       ... 6 more
E/ExoPlayerImplInternal(31850): Disable failed.
E/ExoPlayerImplInternal(31850):   java.lang.IllegalStateException
E/ExoPlayerImplInternal(31850):       at android.media.MediaCodec.native_flush(Native Method)
E/ExoPlayerImplInternal(31850):       at android.media.MediaCodec.flush(MediaCodec.java:2194)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.flush(SynchronousMediaCodecAdapter.java:168)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:780)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:794)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.BaseRenderer.disable(BaseRenderer.java:220)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1846)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1566)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1523)
E/ExoPlayerImplInternal(31850):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:686)
E/ExoPlayerImplInternal(31850):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/ExoPlayerImplInternal(31850):       at android.os.Looper.loop(Looper.java:219)
E/ExoPlayerImplInternal(31850):       at android.os.HandlerThread.run(HandlerThread.java:67)
D/BufferPoolAccessor(31850): buffer invalidation added bp:0 1
D/BufferPoolAccessor(31850): buffer invalidation deleted bp:0
E/ACodec  (31850): signalError(omxError 0x80001001, internalError -110)
E/MediaCodec(31850): Codec reported err 0xffffff92, actionCode 0, while in state 10
I/ACodec  (31850): [OMX.hisi.video.decoder.avc] forcing the release of codec
E/ACodec  (31850): OMX.hisi.video.decoder.avc
E/flutter (31850): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(VideoError, Video player had error 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, null, null)

这个可能是因为用的华为手机,解码不成功。 

快速解决办法, 更换为 

fijkplayer  来播放视频, 不使用 video_player 了。 
Flutter 应用播放视频时出现闪退的问题可能是由多种原因引起的。下面是一些常见的排查方向: ### 1. **检查依赖库版本** - 确保使用的 `video_player` 插件版本是最新的,或者兼容当前项目的 Flutter 版本。旧版本可能存在已知的 bug 或者不支持某些设备特性。 ### 2. **初始化问题** - 视频控制器 (`VideoPlayerController`) 需要在合适的时机进行初始化和释放资源。如果在页面销毁前没有正确处理控制器的状态(如未暂停或停止),可能会导致崩溃。 ### 3. **权限问题** - 如果是从网络加载视频,确保应用已经申请了必要的权限(例如 Android 上的互联网访问权限)。缺少权限可能导致无法正常加载媒体文件,进而引发错误。 ### 4. **硬件加速配置** - 对于部分低端设备来说,默认开启硬件解码可能会引起不稳定现象。你可以尝试禁用硬件加速看看是否能解决问题: ```yaml # pubspec.yaml 中添加 video_player 的设置 flutter: uses-material-design: true assets: - videos/sample.mp4 # main.dart 文件里设置 import 'package:flutter/services.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setEnabledSystemUIOverlays([]); // 关闭混合渲染模式下的HW加速 SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) .then((_) => runApp(MyApp())); } ``` ### 5. **日志分析** - 使用命令行工具查看详细的 crash 日志可以帮助定位具体出错的地方。对于 Android 设备可以借助 ADB logcat;iOS 则通过 Xcode Console 来获取更多信息。 为了更好地帮助您解决这个问题,请提供更多关于项目环境以及具体的报错信息等细节内容哦! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值