IOS 上的 react-native-video 自动重复问题
react-native-video auto repeat issue on IOS
我正在开发显示视频的 React 本机应用程序。我使用了 react-native-video 包。当视频页面打开时,视频将自动开始一次,视频结束后不应重复。它在 android 上运行良好,但在 IOS 上,视频会自动从头开始并不断重复。这是我在视频结束后停止视频的代码:
const onEnd = () => {
setState({ ...state, play: false, showControls: true });
if (videoRef.current) {
videoRef.current.seek(0);
}
};
我该如何解决这个问题?
判断视频播放结束是否重复
false(默认)- 不重复视频
true - 重复视频
最简单的方法
<Video
onEnd={() => {
this._video.seek(0);
this.setState({ pauseVideo: !this.state.pauseVideo })
}}
repeat={false}
paused={this.state.pauseVideo}
key={(item, index) => index.toString()}
source={{ uri:"url" }}
onBuffer={(data) => {
if (data.isBuffering) {
this.setState({ loading: true });
} else {
this.setState({ loading: false });
}
}}
onLoad={() => this.setState({ loading: false })}
onLoadStart={() => this.setState({ loading: true })}
resizeMode="contain"
style={{ height: "100%", width: "100%" }}/>
ios/Video/RCTVideo.m
[item seekToTime:kCMTimeZero];
[self applyModifiers];
} else {
[self setPaused:true]; //`add this line to RCTVideo.m`
[self removePlayerTimeObserver];
}
}
我通过删除这行代码解决了这个问题。保持当前视频时间最大持续时间,不要设置为0,它会无限重复条件。
if (videoRef.current) {
videoRef.current.seek(0);
}
我正在开发显示视频的 React 本机应用程序。我使用了 react-native-video 包。当视频页面打开时,视频将自动开始一次,视频结束后不应重复。它在 android 上运行良好,但在 IOS 上,视频会自动从头开始并不断重复。这是我在视频结束后停止视频的代码:
const onEnd = () => {
setState({ ...state, play: false, showControls: true });
if (videoRef.current) {
videoRef.current.seek(0);
}
};
我该如何解决这个问题?
判断视频播放结束是否重复
false(默认)- 不重复视频 true - 重复视频
最简单的方法
<Video
onEnd={() => {
this._video.seek(0);
this.setState({ pauseVideo: !this.state.pauseVideo })
}}
repeat={false}
paused={this.state.pauseVideo}
key={(item, index) => index.toString()}
source={{ uri:"url" }}
onBuffer={(data) => {
if (data.isBuffering) {
this.setState({ loading: true });
} else {
this.setState({ loading: false });
}
}}
onLoad={() => this.setState({ loading: false })}
onLoadStart={() => this.setState({ loading: true })}
resizeMode="contain"
style={{ height: "100%", width: "100%" }}/>
ios/Video/RCTVideo.m
[item seekToTime:kCMTimeZero];
[self applyModifiers];
} else {
[self setPaused:true]; //`add this line to RCTVideo.m`
[self removePlayerTimeObserver];
}
}
我通过删除这行代码解决了这个问题。保持当前视频时间最大持续时间,不要设置为0,它会无限重复条件。
if (videoRef.current) {
videoRef.current.seek(0);
}