You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter仿TikTok分页后视频加载失败:ExoPlayer播放异常

解决分页加载后ExoPlayer MediaCodecVideoRenderer播放错误问题
  • 先排查视频资源本身
    分页加载的视频大概率是资源环节出了问题:要么是网络请求中断导致资源损坏,要么是数据库存储的路径/URL失效。先把分页返回的视频地址打印出来,手动验证是否能正常播放。另外就算格式显示支持,部分视频可能使用了非标准编码参数(比如特殊的H.264 profile),照样会导致MediaCodec解码失败,要核对新加载视频的编码信息和初始正常视频是否一致。

  • 检查Player的复用与释放逻辑
    垂直滑动短视频通常会复用Player或播放View,分页后容易出现旧Player未彻底释放的情况。滑出屏幕的视频,必须调用player.release();新视频加载前,要么重置Player状态,要么重新初始化实例。如果用的是RecyclerView,ViewHolder绑定新数据时,先让Player执行stop()和clearMediaItems(),再设置新的媒体资源,避免旧播放任务干扰新视频加载。

  • 解决MediaCodec资源耗尽问题
    加载大量视频后,系统分配的MediaCodec实例可能被耗尽(系统对该资源有数量限制)。可以给ExoPlayer的DefaultRenderersFactory开启解码器降级开关,让Player自动切换到兼容的解码器:

    val renderersFactory = DefaultRenderersFactory(context)
        .setEnableDecoderFallback(true)
    val player = ExoPlayer.Builder(context, renderersFactory).build()
    
  • 避免在UI线程处理视频加载逻辑
    分页加载时如果在UI线程执行视频初始化、资源加载操作,很容易导致MediaCodec初始化延迟或异常。把这些操作放到子线程中,仅将播放状态回调到UI线程即可。

  • 升级ExoPlayer版本
    部分旧版本ExoPlayer存在批量加载视频时Codec资源泄漏的bug,检查当前使用的版本,直接升级到最新稳定版,多数已知的播放异常问题都能得到修复。

内容的提问来源于stack exchange,提问作者user22433389

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:34:50