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

react-native-video@5.1.1 Android端onProgress事件不触发问题求助

问题排查与解决方案

  • 确认安卓端使用ExoPlayer内核
    react-native-video v5.1.1版本默认搭载的安卓原生MediaPlayer内核对MIUI系统的适配性较差,极易出现进度回调丢失的问题。可在项目配置中切换为ExoPlayer内核:
    1. 在android/gradle.properties文件中添加配置exoplayerVersion=2.13.2
    2. 在android/app/build.gradle的依赖项中,将react-native-video的引入替换为ExoPlayer变体:
    implementation "com.brentvatne.react:react-native-video-exoplayer:5.1.1"
    
  • 调整进度回调间隔参数
    组件默认的progressUpdateInterval为250ms,MIUI系统的进程调度策略会拦截高频率的非系统回调,可主动调大该参数,在Video组件上添加progressUpdateInterval={1000}即可设置为每1秒回调一次进度。
  • 检查MIUI系统权限与限制
    1. 关闭对应App的省电优化:进入设置-电池与性能-省电优化,找到你的应用后设置为「无限制」
    2. 确认应用已获取媒体播放相关权限,无后台播放限制
  • 验证视频源兼容性
    当前使用的是代理生成的视频地址,可替换为公共可直接访问的标准MP4地址测试,如果替换后回调正常,则说明代理返回的视频流缺少必要的metadata信息,导致播放器无法计算进度。

修改后代码示例

const handleOnProgress = (data) => {
  console.tron.log('on Progress', data)
}

...

<Video
  source={{ uri: convertToProxyURL(additionalInformation?.sourceUrl) }}
  poster={additionalInformation?.thumbnailUrl}
  style={styles.video}
  posterResizeMode="cover"
  resizeMode="cover"
  controls
  paused={paused}
  // 新增回调间隔配置
  progressUpdateInterval={1000}
  onLoad={handleOnLoad}
  onPlaybackRateChange={handleVideoChange}
  onProgress={handleOnProgress}
  onSeek={handleSeek}
  onFullscreenPlayerWillPresent={handleFullScreenMode}
  onError={handleOnError}
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:18:03