react-video hls.js 播放m3u8视频时,切换有延迟
recat-video hls.js开发视频播放页面时,加载m3u8,
切换视频更新resource后 重新播放了,但是时间较长的视频会播放之前的视频一段时间后才会切换到新的视频
HLSSource
import React, { Component } from 'react';
import Hls from 'hls.js';
export default class HLSSource extends Component {
constructor(props, context) {
super(props, context);
this.hls = new Hls();
}
componentDidMount() {
// this.setHls()
}
componentWillReceiveProps() {
}
setHls = () => {
console.log(this.hls)
const { src, video } = this.props
if (Hls.isSupported()) {
this.hls.loadSource(src);
this.hls.attachMedia(video);
}
}
play = () => {
const { video } = this.props
this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
video.play();
});
}
destroy = () => {
if (this.hls) {
this.hls.destroy()
}
}
componentWillUnmount() {
// destroy hls video source
if (this.hls) {
this.hls.destroy()
}
}
render() {
return (
<source
src={this.props.src}
preload="none"
type={this.props.type || 'application/x-mpegURL'}
/>
);
}
}
Player
change = (lesson) => {
const Player = this.refs.player
this.setState({
courseUrl: url
}, () => {
this.refs.hlsSource.setHls()
// 更新resource后 重新播放,但是时间较长的视频会播放之前的视频一段时间后才会切换到新的视频
this.refs.hlsSource.play()
// Player.load()
})
}
render ){
return(
<Player
ref="player"
playsInline
autoPlay={false}
className="video-play"
startTime={this.state.startTime}>
<HLSSource
isVideoChild
ref='hlsSource'
src={this.state.courseUrl} />
</Player>
)}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
推荐一个播放器
dplayer
(http://dplayer.js.org/#/)