From a54304ec54bfdfe97544eff33d7d86d4eaac1cff Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 13 May 2022 20:30:38 +0200 Subject: [PATCH] player events --- .../app/src/pages/streams/viewer/index.jsx | 62 +++++++++++++++---- .../app/src/pages/streams/viewer/index.less | 11 ++++ 2 files changed, 62 insertions(+), 11 deletions(-) diff --git a/packages/app/src/pages/streams/viewer/index.jsx b/packages/app/src/pages/streams/viewer/index.jsx index 59beed3b..77dc7126 100644 --- a/packages/app/src/pages/streams/viewer/index.jsx +++ b/packages/app/src/pages/streams/viewer/index.jsx @@ -15,6 +15,10 @@ const streamsSource = config.remotes.streamingApi export default class StreamViewer extends React.Component { state = { + isEnded: false, + isLoading: true, + endResult: false, + userData: null, streamInfo: null, spectators: 0, @@ -67,10 +71,10 @@ export default class StreamViewer extends React.Component { // await for it await this.gatherStreamInfo() - // create timer - if (this.state.streamInfo.connectCreated) { - this.createTimerCounter() - } + // // create timer + // if (this.state.streamInfo.connectCreated) { + // this.createTimerCounter() + // } } componentWillUnmount = () => { @@ -106,7 +110,7 @@ export default class StreamViewer extends React.Component { username: this.state.streamKey, }).catch((error) => { console.error(error) - antd.message.error(error.message) + antd.message.error(error) return false }) @@ -136,8 +140,8 @@ export default class StreamViewer extends React.Component { if (loadedProtocol === "hls") { this.state.protocolInstance.levels.forEach((level, levelIndex) => { if (level.height === newQuality) { - console.log("Found quality match with " + newQuality); - this.state.protocolInstance.currentLevel = levelIndex; + console.log("Found quality match with " + newQuality) + this.state.protocolInstance.currentLevel = levelIndex } }) } @@ -198,8 +202,10 @@ export default class StreamViewer extends React.Component { const source = `${streamsSource}/stream/flv/${this.state.streamKey}` const instance = mpegts.createPlayer({ + enableWorker: true, type: "flv", url: source, + cors: true, isLive: true }) @@ -207,12 +213,50 @@ export default class StreamViewer extends React.Component { instance.load() instance.play() + instance.on("error", (error) => { + console.error(error) + antd.message.error(error.toString()) + + //this.onSourceEnded(error) + }) + + // instance.on("onSourceOpen", this.onSourceLoading) + // instance.on(mpegts.Events["LOADING_COMPLETE"], this.onSourceLoadingDone) + // instance.on("onSourceEnded", this.onSourceEnded) + this.setState({ protocolInstance: instance, loadedProtocol: "flv" }) }, } + onSourceLoading = () => { + this.setState({ + isLoading: true, + }) + } + + onSourceLoadingDone = () => { + console.log(`loaded ${this.state.loadedProtocol}`) + this.setState({ + isLoading: false, + }) + } + + onSourceEnded = () => { + console.log("Source ended") + this.setState({ isEnded: true }) + } + render() { return
+ { + this.state.isEnded &&
+ +

+ This stream is ended +

+
+
+ }