From 4a800a8fc83c6bd1f86a8e847b079a51a7532c09 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 20 七月 2022 15:05:58 +0800
Subject: [PATCH] 修复国标配置的bug

---
 src/components/player/wfs/controller/buffer-controller.js |   95 +++++++++++++++++++++++------------------------
 1 files changed, 46 insertions(+), 49 deletions(-)

diff --git a/src/components/player/wfs/controller/buffer-controller.js b/src/components/player/wfs/controller/buffer-controller.js
index 25b3211..31c5e27 100644
--- a/src/components/player/wfs/controller/buffer-controller.js
+++ b/src/components/player/wfs/controller/buffer-controller.js
@@ -2,17 +2,12 @@
  * Buffer Controller
  */
 /* eslint-disable */
-import Event from '../events';
-import EventHandler from '../event-handler';
+import Event from "../events";
+import EventHandler from "../event-handler";
 
 class BufferController extends EventHandler {
   constructor(wfs) {
-    super(
-      wfs,
-      Event.MEDIA_ATTACHING,
-      Event.BUFFER_APPENDING,
-      Event.BUFFER_RESET
-    );
+    super(wfs, Event.MEDIA_ATTACHING, Event.BUFFER_APPENDING, Event.BUFFER_RESET);
 
     this.mediaSource = null;
     this.media = null;
@@ -27,10 +22,10 @@
     this.onsbue = this.onSBUpdateEnd.bind(this);
 
     this.browserType = 0;
-    if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) {
+    if (navigator.userAgent.toLowerCase().indexOf("firefox") !== -1) {
       this.browserType = 1;
     }
-    this.mediaType = 'H264Raw';
+    this.mediaType = "H264Raw";
 
     this.websocketName = undefined;
     this.channelName = undefined;
@@ -54,9 +49,9 @@
       this.onmso = this.onMediaSourceOpen.bind(this);
       this.onmse = this.onMediaSourceEnded.bind(this);
       this.onmsc = this.onMediaSourceClose.bind(this);
-      ms.addEventListener('sourceopen', this.onmso);
-      ms.addEventListener('sourceended', this.onmse);
-      ms.addEventListener('sourceclose', this.onmsc);
+      ms.addEventListener("sourceopen", this.onmso);
+      ms.addEventListener("sourceended", this.onmse);
+      ms.addEventListener("sourceclose", this.onmsc);
       // link video and media Source
       media.src = URL.createObjectURL(ms);
     }
@@ -74,11 +69,11 @@
   }
 
   onMediaSourceClose() {
-    console.log('media source closed');
+    // console.log('media source closed');
   }
 
   onMediaSourceEnded() {
-    console.log('media source ended');
+    console.log("media source ended");
   }
 
   onSBUpdateEnd(event) {
@@ -99,10 +94,10 @@
     let mediaSource = this.mediaSource;
     if (mediaSource) {
       // once received, don't listen anymore to sourceopen event
-      mediaSource.removeEventListener('sourceopen', this.onmso);
+      mediaSource.removeEventListener("sourceopen", this.onmso);
     }
 
-    if (this.mediaType === 'FMp4') {
+    if (this.mediaType === "FMp4") {
       this.checkPendingTracks();
     }
 
@@ -116,13 +111,13 @@
   }
 
   checkPendingTracks() {
-    this.createSourceBuffers({ tracks: 'video', mimeType: '' });
+    this.createSourceBuffers({ tracks: "video", mimeType: "" });
     this.pendingTracks = {};
   }
 
   onBufferReset(data) {
-    if (this.mediaType === 'H264Raw') {
-      this.createSourceBuffers({ tracks: 'video', mimeType: data.mimeType });
+    if (this.mediaType === "H264Raw") {
+      this.createSourceBuffers({ tracks: "video", mimeType: data.mimeType });
     }
   }
 
@@ -130,15 +125,15 @@
     var sourceBuffer = this.sourceBuffer,
       mediaSource = this.mediaSource;
     let mimeType;
-    if (tracks.mimeType === '') {
-      mimeType = 'video/mp4;codecs=avc1.420028'; // avc1.42c01f avc1.42801e avc1.640028 avc1.420028
+    if (tracks.mimeType === "") {
+      mimeType = "video/mp4;codecs=avc1.420028"; // avc1.42c01f avc1.42801e avc1.640028 avc1.420028
     } else {
-      mimeType = 'video/mp4;codecs=' + tracks.mimeType;
+      mimeType = "video/mp4;codecs=" + tracks.mimeType;
     }
 
     try {
-      let sb = (sourceBuffer['video'] = mediaSource.addSourceBuffer(mimeType));
-      sb.addEventListener('updateend', this.onsbue);
+      let sb = (sourceBuffer["video"] = mediaSource.addSourceBuffer(mimeType));
+      sb.addEventListener("updateend", this.onsbue);
       track.buffer = sb;
     } catch (err) {}
     this.wfs.trigger(Event.BUFFER_CREATED, { tracks: tracks });
@@ -152,14 +147,16 @@
     if (Object.keys(sourceBuffer).length) {
       if (this.media.error) {
         this.segments = [];
-        console.log(
-          'trying to append although a media error occured, flush segment and abort'
-        );
+        // console.log(
+        //   'trying to append although a media error occured, flush segment and abort'
+        // );
         return;
       }
       if (this.appending) {
         return;
       }
+
+      wfs.playerStatus = 1;
 
       if (segments && segments.length) {
         var segment = segments.shift();
@@ -175,27 +172,27 @@
         } catch (err) {
           // in case any error occured while appending, put back segment in segments table
           segments.unshift(segment);
-          var event = { type: ErrorTypes.MEDIA_ERROR };
-          if (err.code !== 22) {
-            if (this.appendError) {
-              this.appendError++;
-            } else {
-              this.appendError = 1;
-            }
-            event.details = ErrorDetails.BUFFER_APPEND_ERROR;
-            event.frag = this.fragCurrent;
-            if (this.appendError > wfs.config.appendErrorMaxRetry) {
-              segments = [];
-              event.fatal = true;
-              return;
-            } else {
-              event.fatal = false;
-            }
-          } else {
-            this.segments = [];
-            event.details = ErrorDetails.BUFFER_FULL_ERROR;
-            return;
-          }
+          // var event = { type: ErrorTypes.MEDIA_ERROR };
+          // if (err.code !== 22) {
+          //   if (this.appendError) {
+          //     this.appendError++;
+          //   } else {
+          //     this.appendError = 1;
+          //   }
+          //   event.details = ErrorDetails.BUFFER_APPEND_ERROR;
+          //   event.frag = this.fragCurrent;
+          //   if (this.appendError > wfs.config.appendErrorMaxRetry) {
+          //     segments = [];
+          //     event.fatal = true;
+          //     return;
+          //   } else {
+          //     event.fatal = false;
+          //   }
+          // } else {
+          //   this.segments = [];
+          //   event.details = ErrorDetails.BUFFER_FULL_ERROR;
+          //   return;
+          // }
         }
       }
     }

--
Gitblit v1.8.0