我尝试使用React Native video包在我的React Native应用中使用exoplayer。
我有一个同时包含HLS流和mp4视频的应用,这些视频存储在我的服务器上(https)。
在浏览视频时,播放器会陷入无限缓冲状态并保持这种状态,直到我重新启动应用。这完全是随机的。重现问题的唯一方法就是观看视频并多次切换源。
查看Android logcat时没有错误。 adb bugreport也不起作用。
LambdaFunctionVersion2
注意:我对exoplayer 2.8.0进行了更新,该软件包使用的是2.4.0。但它并不适用于这两个版本。
有人熟悉这个问题吗?
答案 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;