Преглед изворни кода

#4091 Streams: don't autoplay streams in embeds

Alex Trofimov пре 3 година
родитељ
комит
d8828faccd

+ 11 - 2
modules/boonex/stream/classes/BxStrmTemplate.php

@@ -121,7 +121,7 @@ class BxStrmTemplate extends BxBaseModTextTemplate
     {
         $CNF = &$this->getModule()->_oConfig->CNF;
         return $this->parseHtmlByName('stream_viewers.html', array(
-            'viewers' => _t('_bx_stream_txt_viewers_loading'),
+            'viewers' => _t('_bx_stream_txt_wait_for_stream'),
             'suffix' => md5($aContentInfo[$CNF['FIELD_KEY']]),
             'url' => BX_DOL_URL_MODULES . '?r=' . $this->getModule()->_oConfig->getUri() . '/stream_viewers/' . $aContentInfo[$CNF['FIELD_ID']]
         ));
@@ -160,11 +160,17 @@ class BxStrmTemplate extends BxBaseModTextTemplate
         if (!isset($aOptions['mute']))
             $aOptions['mute'] = getParam('bx_stream_mute') ? 1 : 0;
 
+        if (isset($aOptions['autostart']))
+            $aOptions['autostart'] = $aOptions['autostart'] ? 1 : 0;
+        else
+            $aOptions['autostart'] = 1;
+
         return $this->parseHtmlByName('stream_player.html', array(
             'suffix' => md5($aContentInfo[$CNF['FIELD_KEY']]),
             'sources' => $sSources,
             'mute' => $aOptions['mute'],
             'image' => $sImage,
+            'autostart' => $aOptions['autostart'],
         ));
     }
 
@@ -175,7 +181,10 @@ class BxStrmTemplate extends BxBaseModTextTemplate
         // TODO: visibility and other checks
 
         $sCode = $this->parseHtmlByName('stream_embed.html', array(
-            'player' => $this->entryStreamPlayer ($aContentInfo, ['mute' => (getParam('bx_stream_mute_embed') ? 1 : 0)]),
+            'player' => $this->entryStreamPlayer ($aContentInfo, [
+                'mute' => getParam('bx_stream_mute_embed') ? 1 : 0,
+                'autostart' => 0,
+            ]),
             'viewers' => $this->entryStreamViewers ($aContentInfo),
         ));
 

+ 17 - 7
modules/boonex/stream/template/stream_player.html

@@ -13,7 +13,7 @@
         oPlayer = OvenPlayer.create("bx-stream-player-__suffix__",
         {
             sources: aSources,
-            autoStart: true,
+            autoStart: __autostart__,
             autoFallback: true,
             image: '__image__',
             mute: __mute__ // muted player always autoplays
@@ -25,13 +25,23 @@
         });
 
         // reload player when error occured, it's needed to start player automatically when stream starts
-        oPlayer.on('error', function() {
+        var fReloader = function() {
+            if (!__autostart__)
+                return;
+
             setTimeout(function () {
-                if (++iBxStreamCounter > 250)
-                    location.reload();
-                fLoadPlayer();
-            }, 5000)
-        });
+                if ('undefined' !== typeof(document.hidden) && !document.hidden) {
+                    if (++iBxStreamCounter > 250)
+                        location.reload();
+                    fLoadPlayer();
+                }
+                else {
+                    console.log('empty reloader....');
+                    fReloader();
+                }
+            }, 5000);
+        };
+        oPlayer.on('error', fReloader);
     };
     fLoadPlayer();
 </script>

+ 19 - 13
modules/boonex/stream/template/stream_viewers.html

@@ -1,20 +1,26 @@
 <div id="bx-stream-viewers-__suffix__" class="bx-stream-viewers">__viewers__</div>
 <script>
     var fFunc = function () {
-        $.getJSON('__url__', function (oData) {
-            if ('undefined' !== typeof(oData.viewers)) {
-                $('#bx-stream-viewers-__suffix__').html(oData.viewers);
-            }
-            if ('undefined' !== typeof(oData.num) && false !== oData.num) {
-                $('#bx-stream-processing').hide();
-                $('.bx-stream-badge').show();
-            }
-            if ('undefined' !== typeof(oData.num) && false === oData.num) {
-                $('.bx-stream-badge').hide();
-            }
-        }).always(function() {
+        let playerInstance = OvenPlayer.getPlayerByContainerId("bx-stream-player-__suffix__");
+        if ((!playerInstance || 'playing' == playerInstance.getState()) && ('undefined' !== typeof(document.hidden) && !document.hidden)) {
+            $.getJSON('__url__', function (oData) {
+                if ('undefined' !== typeof(oData.viewers)) {
+                    $('#bx-stream-viewers-__suffix__').html(oData.viewers);
+                }
+                if ('undefined' !== typeof(oData.num) && false !== oData.num) {
+                    $('#bx-stream-processing').hide();
+                    $('.bx-stream-badge').show();
+                }
+                if ('undefined' !== typeof(oData.num) && false === oData.num) {
+                    $('.bx-stream-badge').hide();
+                }
+            }).always(function() {
+                setTimeout(fFunc, 10000);
+            });
+        }
+        else {
             setTimeout(fFunc, 10000);
-        });
+        }
     }
     fFunc();
 </script>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/dash.all.min.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/dash.all.min.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/hls.min.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/hls.min.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/ovenplayer.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
plugins_public/ovenplayer/ovenplayer.js.map


Неке датотеке нису приказане због велике количине промена