Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OvenPlayer leaking DOM nodes #363

Closed
rebound-software opened this issue Jul 5, 2023 · 3 comments
Closed

OvenPlayer leaking DOM nodes #363

rebound-software opened this issue Jul 5, 2023 · 3 comments
Assignees

Comments

@rebound-software
Copy link
Contributor

rebound-software commented Jul 5, 2023

I'm using OvenPlayer (latest 0.10.30) in an angular 12 based web application to view several live feeds via WebRTC from OME. The nature of my use case involves repeated viewing and recording short (1-2mins) of live video feed from a camera. The browser used is Chrome.

OvenPlayer is instantiated in a component to show the live feed which is then destroyed when the next view is displayed. The component is then re-instantiated for the next recording, and repeat ...

What I'm seeing is a leak of ~3k DOM nodes from OvenPlayer after calling stop() then remove() in the component OnDestroy() hook. My application needs to run continuously for many hours. The DOM node leak is causing the browser to gradually slow down to the point of becoming unusable after about 30 mins (DOM node use checked after manually running garbage collector).

Component html:

<div class="player-wrapper" style="width: 100%">
    <div id="{{uniquePlayerId}}"></div>
</div>

My component code is:

import { AfterViewInit, Component, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation } from "@angular/core";
import * as OvenPlayer from 'ovenplayer';
import _ from 'underscore';
import { MediaPlayerStream } from "../../../../../imports/models/media-model";

@Component({
  selector: 'media-stream-ovenplayer',
  templateUrl: 'media-stream-ovenplayer.component.html',
  styleUrls: [ ],
  providers: [ ],
  encapsulation: ViewEncapsulation.None
})

export class MediaStreamOvenplayerComponent implements OnDestroy, OnChanges, AfterViewInit {
  @Input() streams: MediaPlayerStream[];
  @Input() autoStart: boolean;

  private ovenPlayer: OvenPlayer;
  uniquePlayerId: string;

  constructor() {
    this.uniquePlayerId = _.uniqueId();
    this.autoStart = false;
  }

  ngOnChanges(changes: SimpleChanges) {
    for (const propName in changes) {
      if (propName === 'streams' && !changes[propName].isFirstChange()) {
        if (this.ovenPlayer) {
          this.ovenPlayer.load(this.streams);
        }
      }
    }
  }

  ngAfterViewInit() {
    // needs to be after view init to ensure player id is set in DOM
    // Uniique id needed to allow multiple players in same html
    // streams are loaded
    let config = {
      "autoStart": this.autoStart,
      "autoFallback": false,
      "mute": true,
    };
    if (this.streams && this.streams.length > 0) {
      config['sources'] = this.streams;
    }
    else {
      console.log("No streams, using test file");
      config["sources"] = [{
        "type": "mp4",
        "file": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/1080/Big_Buck_Bunny_1080_10s_1MB.mp4"
      }];
    }

    this.ovenPlayer = OvenPlayer.create(this.uniquePlayerId, config);
//    OvenPlayer.debug(true);
  }

  ngOnDestroy() {
    this.ovenPlayer.stop();
    this.ovenPlayer.remove();
  }
}

DOM nodes after viewing component above, then browsing away, then viewing again about 10 times:

Screenshot 2023-07-05 at 12 22 28
@rebound-software
Copy link
Contributor Author

OvenPlayer debug log:

media-stream-ovenplayer.component.ts:41 Playing : [{…}]
media-stream-ovenplayer.component.ts:58 config : {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1)}
media-stream-ovenplayer.component.ts:59 creating oven player
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [OvenPlayer] v.0.10.30
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Caption Manager >>  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
media-stream-ovenplayer.component.ts:41 Playing : [{…}]
media-stream-ovenplayer.component.ts:58 config : {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1)}
media-stream-ovenplayer.component.ts:59 creating oven player
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [OvenPlayer] v.0.10.30
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager loaded. browser :  {screen: '2560 x 1440', browser: 'Chrome', browserVersion: '114.0.0.0', browserMajorVersion: 114, mobile: false, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Configurator loaded. {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1), mediaContainer: div.op-media-element-container.op-clear, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() config :  {getConfig: ƒ, getAdClient: ƒ, setConfig: ƒ, getContainer: ƒ, getPlaybackRate: ƒ, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager setPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() sources :  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNamesByPlaylist() {sources: Array(1), tracks: Array(0), title: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loadProviders()  ['webrtc']
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController _registerProvider()  webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Caption Manager >>  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.
media-stream-ovenplayer.component.ts:41 Playing : [{…}]
media-stream-ovenplayer.component.ts:58 config : {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1)}
media-stream-ovenplayer.component.ts:59 creating oven player
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [OvenPlayer] v.0.10.30
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager loaded. browser :  {screen: '2560 x 1440', browser: 'Chrome', browserVersion: '114.0.0.0', browserMajorVersion: 114, mobile: false, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Configurator loaded. {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1), mediaContainer: div.op-media-element-container.op-clear, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() config :  {getConfig: ƒ, getAdClient: ƒ, setConfig: ƒ, getContainer: ƒ, getPlaybackRate: ƒ, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager setPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() sources :  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNamesByPlaylist() {sources: Array(1), tracks: Array(0), title: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loadProviders()  ['webrtc']
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController _registerProvider()  webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentPlaylist()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 FULLSCREEN STATE :  false
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Caption Manager >>  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
media-stream-ovenplayer.component.ts:41 Playing : [{…}]
media-stream-ovenplayer.component.ts:58 config : {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1)}
media-stream-ovenplayer.component.ts:59 creating oven player
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [OvenPlayer] v.0.10.30
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager loaded. browser :  {screen: '2560 x 1440', browser: 'Chrome', browserVersion: '114.0.0.0', browserMajorVersion: 114, mobile: false, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Configurator loaded. {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1), mediaContainer: div.op-media-element-container.op-clear, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() config :  {getConfig: ƒ, getAdClient: ƒ, setConfig: ƒ, getContainer: ƒ, getPlaybackRate: ƒ, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager setPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() sources :  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNamesByPlaylist() {sources: Array(1), tracks: Array(0), title: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loadProviders()  ['webrtc']
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController _registerProvider()  webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentPlaylist()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 FULLSCREEN STATE :  false
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
media-stream-ovenplayer.component.ts:41 Playing : [{…}]
media-stream-ovenplayer.component.ts:58 config : {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1)}
media-stream-ovenplayer.component.ts:59 creating oven player
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [OvenPlayer] v.0.10.30
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager loaded. browser :  {screen: '2560 x 1440', browser: 'Chrome', browserVersion: '114.0.0.0', browserMajorVersion: 114, mobile: false, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Configurator loaded. {autoStart: 'true', autoFallback: false, mute: true, sources: Array(1), mediaContainer: div.op-media-element-container.op-clear, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() config :  {getConfig: ƒ, getAdClient: ƒ, setConfig: ƒ, getContainer: ƒ, getPlaybackRate: ƒ, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager setPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() sources :  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNamesByPlaylist() {sources: Array(1), tracks: Array(0), title: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 SupportChecker : findProviderNameBySource() {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController loadProviders()  ['webrtc']
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 ProviderController _registerProvider()  webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getPlaylist()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentPlaylist()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 FULLSCREEN STATE :  false
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Caption Manager >>  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Caption Manager >>  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() captions
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : init() provider webrtc
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 MediaManager removeElement()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [Provider] loaded.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener loaded. <video disableremoteplayback webkit-playsinline=​"true" playsinline=​"true" autoplay src=​"null">​</video>​ {on: ƒ, trigger: ƒ, off: ƒ, once: ƒ}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC PROVIDER LOADED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 PlaylistManager getCurrentSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC : onBeforeLoad :  {default: false, type: 'webrtc', file: 'wss://...', label: 'webrtc-0'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader connecting...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader url : wss://...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getState()  idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getVolume() 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on volumechange 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getState()  idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getVolume() 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getState()  idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getVolume() 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on volumechange 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on volumechange 100
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getMute() true
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Main Peer Connection Config :  {iceServers: Array(1), iceTransportPolicy: 'relay'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 stream received.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Recovery On Packet Loss : false
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 stream received.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Recovery On Packet Loss : false
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 addIceCandidate : success
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 cloned addIceCandidate : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Local SDP RTCSessionDescription {type: 'answer', sdp: 'v=0\r\no=- 8907588923312700936 2 IN IP4 127.0.0.1\r\ns…\na=fmtp:110 minptime=10;useinbandfec=1;stereo=1\r\n'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 create Host Answer : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Main Peer Connection Config :  {iceServers: Array(1), iceTransportPolicy: 'relay'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 stream received.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Recovery On Packet Loss : false
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 stream received.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Recovery On Packet Loss : false
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 addIceCandidate : success
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 cloned addIceCandidate : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Local SDP RTCSessionDescription {type: 'answer', sdp: 'v=0\r\no=- 4888380221878938915 2 IN IP4 127.0.0.1\r\ns…\na=fmtp:110 minptime=10;useinbandfec=1;stereo=1\r\n'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 create Host Answer : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] checking Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:3463409957 1 udp 16786175 1.1.1.1 14090 … rport 0 generation 0 ufrag VUzF network-cost 999', sdpMid: 'SRTFLf', sdpMLineIndex: 0, foundation: '3463409957', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connecting Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] connected Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connected Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] checking Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:844056885 1 udp 16786175 1.1.1.1 14090 t… rport 0 generation 0 ufrag 3NXy network-cost 999', sdpMid: 'tJC7L3', sdpMLineIndex: 0, foundation: '844056885', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:844056885 1 udp 16785919 1.1.1.1 14090 t… rport 0 generation 0 ufrag 3NXy network-cost 999', sdpMid: 'tJC7L3', sdpMLineIndex: 0, foundation: '844056885', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connecting Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:844056885 1 udp 16785407 1.1.1.1 14090 t… rport 0 generation 0 ufrag 3NXy network-cost 999', sdpMid: 'tJC7L3', sdpMLineIndex: 0, foundation: '844056885', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] connected Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connected Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
2modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on progress NaN
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on progress 0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on durationchange
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on loadedmetadata {duration: Infinity, type: 'webrtc'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : isTimecodeMode()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getFramerate()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [[[[LIVE MODE]]]]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on canplay
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : video play success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on progress 0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on durationchange
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on loadedmetadata {duration: Infinity, type: 'webrtc'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : isTimecodeMode()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getFramerate()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [[[[LIVE MODE]]]]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on canplay
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : video play success
countdown-button.component.ts:58 Mouse up/touch cancel
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Main Peer Connection Config :  {iceServers: Array(1), iceTransportPolicy: 'relay'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 stream received.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Recovery On Packet Loss : false
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 addIceCandidate : success
3modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 cloned addIceCandidate : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Local SDP RTCSessionDescription {type: 'answer', sdp: 'v=0\r\no=- 4474923093201502711 2 IN IP4 127.0.0.1\r\ns…=1;packetization-mode=1;profile-level-id=42e01f\r\n'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 create Host Answer : success
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] checking Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:894005427 1 udp 16786175 1.1.1.1 14090 t… rport 0 generation 0 ufrag X7QH network-cost 999', sdpMid: 'onqGpU', sdpMLineIndex: 0, foundation: '894005427', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connecting Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:894005427 1 udp 16785919 1.1.1.1 14090 t… rport 0 generation 0 ufrag X7QH network-cost 999', sdpMid: 'onqGpU', sdpMLineIndex: 0, foundation: '894005427', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTCLoader send candidate to server :  RTCIceCandidate {candidate: 'candidate:894005427 1 udp 16785407 1.1.1.1 14090 t… rport 0 generation 0 ufrag X7QH network-cost 999', sdpMid: 'onqGpU', sdpMLineIndex: 0, foundation: '894005427', component: 'rtp', …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on ice connection state change] connected Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [on connection state change] connected Event {isTrusted: true, type: 'connectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
countdown-button.component.ts:25 Mouse/touch down
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on progress NaN
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on progress 0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on durationchange
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on loadedmetadata {duration: Infinity, type: 'webrtc'}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : play()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getSources()  [{…}]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getCurrentSource()  0
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : isTimecodeMode()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getFramerate()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 [[[[LIVE MODE]]]]
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on canplay
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus loading
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : on playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus playing
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : video play success
3countdown-button.component.ts:29 Timer callback
countdown-button.component.ts:40 Mouse up/touch release
countdown-button.component.ts:50 Restart timer is 0
judge-score-entry-chair.component.ts:224 Aborting score entry in  WAITING  for  ObjectID {_str: 'd6bac417af53380242c138a5'}  JSE  ObjectID {_str: 'c0ce23323db548e94c60a194'}
judging-panels.service.ts:115 JudgingPanel - Aborting score entry for  ObjectID {_str: 'c0ce23323db548e94c60a194'}
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing main peer connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing main peer connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.
media-stream-ovenplayer.component.ts:76 Stopping OvenPlayer
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : setState() idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : triggerSatatus idle
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WebRTC Loader closePeer()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing main peer connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Closing websocket connection...
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Send Signaling : Stop.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 WEBRTC :  PROVIDER DESTROYED.
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : stop()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 Provider : pause()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 EventListener : destroy()
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 CORE : destroy() player stop, listener, event destroied
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : getConfig() {mediaContainer: div.op-media-element-container.op-clear, playbackRates: Array(5), playbackRate: 1, mute: true, volume: 100, …}
modules.js?hash=df2abbc00bd76577bcc32c60db1f7304e029dbf0:168024 API : remove() - currentProvider, providerController, playlistManager, playerConfig, api event destroed.

@SangwonOh SangwonOh self-assigned this Jul 6, 2023
@rebound-software
Copy link
Contributor Author

I had some time over the weekend to dig into what is causing the DOM node leaks and have found 3 causes. I've created a PR with fixes for these and everything now looks good after running the garbage collector the number of used nodes returns back to the starting level and I'm not seeing any gradual slow down anymore.

[https://github.com//pull/365]

@SangwonOh
Copy link
Member

@rebound-software Thank you very much for your contribution! The pull request has been merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants