Exoplayer无限缓冲状态

时间:2018-05-22 13:50:56

标签: android react-native exoplayer react-native-video

我尝试使用React Native video包在我的React Native应用中使用exoplayer。

我有一个同时包含HLS流和mp4视频的应用,这些视频存储在我的服务器上(https)。

在浏览视频时,播放器会陷入无限缓冲状态并保持这种状态,直到我重新启动应用。这完全是随机的。重现问题的唯一方法就是观看视频并多次切换源。

查看Android logcat时没有错误。 adb bugreport也不起作用。

LambdaFunctionVersion2

注意:我对exoplayer 2.8.0进行了更新,该软件包使用的是2.4.0。但它并不适用于这两个版本。

有人熟悉这个问题吗?

3 个答案:

答案 0 :(得分:1)

提供适当的缓冲区大小,并确保以正确的方式释放Exo播放器,并且也使用播放器错误(ExoPlaybackException错误)方法,并在其中放置日志或将数据发送到Firebase分析。有时很难找到exoplayer被卡住的真正原因。它也可能是源错误或渲染错误。我也遇到了此类问题,有时它是无法恢复的(2%)。在这种情况下,我已通知用户出现问题,请重试。

答案 1 :(得分:1)

如果您使用<input type="button" value="clear" onclick="window.clear()"> 广告,则应将postroll更新为2.11.0(2019-12-11)。正如您在release note中所读的,该版本:

ExoPlayer

link中也有关于该问题的有用信息。

HLS:
Fix issue where streams could get stuck in an infinite buffering state after a `postroll` ad (#6314).

答案 2 :(得分:0)

在这种情况下,建议释放播放器资源并重新准备播放器配置。最后观看的持续时间Exo播放器将为您提供一个错误句柄(事件),该事件应用于触发播放器释放。

要释放资源,您必须使用以下方法:

class Parenthome extends Component {
  render() {
    const { navigate } = this.props.navigation;
    return (
      <View style={styles.container}>
        <ToolbarAndroid
          style={styles.toolbar}
          title="Toolbar"
          titleColor="#ff6600"
        />

        <Toptab navigation={this.props.navigation} />
      </View>
    );
  }
}

const UpdatesStack = createStackNavigator(
  {
    Updates: { screen: Home }
  },
  {
    initialRouteName: "Updates"
  }
);

const ShopsStack = createStackNavigator(
  {
    Shops: { screen: Conshop }
  },
  {
    initialRouteName: "Shops"
  }
);

const Toptab = createMaterialTopTabNavigator({
  Updatestab: { screen: UpdatesStack },
  Shopstab: { screen: ShopsStack }
});

export default Parenthome;