1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-06 03:50:04 +02:00

Chromecast moved to PlayerSkins plugin

aisplay option added on PlayerSkins
This commit is contained in:
Daniel Neto 2024-10-30 20:19:49 -03:00
parent 480ae72b99
commit efd0665a44
286 changed files with 72588 additions and 1487 deletions

View file

@ -1,6 +1,6 @@
/**
* @license
* Video.js 8.18.1 <http://videojs.com/>
* Video.js 8.19.1 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/main/LICENSE>
@ -16,7 +16,7 @@
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.videojs = factory());
})(this, (function () { 'use strict';
var version$5 = "8.18.1";
var version$5 = "8.19.1";
/**
* An Object that contains lifecycle hooks as keys which point to an array
@ -22602,6 +22602,59 @@
this.setSrc(src);
}
/**
* Add a <source> element to the <video> element.
*
* @param {string} srcUrl
* The URL of the video source.
*
* @param {string} [mimeType]
* The MIME type of the video source. Optional but recommended.
*
* @return {boolean}
* Returns true if the source element was successfully added, false otherwise.
*/
addSourceElement(srcUrl, mimeType) {
if (!srcUrl) {
log$1.error('Invalid source URL.');
return false;
}
const sourceAttributes = {
src: srcUrl
};
if (mimeType) {
sourceAttributes.type = mimeType;
}
const sourceElement = createEl('source', {}, sourceAttributes);
this.el_.appendChild(sourceElement);
return true;
}
/**
* Remove a <source> element from the <video> element by its URL.
*
* @param {string} srcUrl
* The URL of the source to remove.
*
* @return {boolean}
* Returns true if the source element was successfully removed, false otherwise.
*/
removeSourceElement(srcUrl) {
if (!srcUrl) {
log$1.error('Source URL is required to remove the source element.');
return false;
}
const sourceElements = this.el_.querySelectorAll('source');
for (const sourceElement of sourceElements) {
if (sourceElement.src === srcUrl) {
this.el_.removeChild(sourceElement);
return true;
}
}
log$1.warn(`No matching source element found with src: ${srcUrl}`);
return false;
}
/**
* Reset the tech by removing all sources and then calling
* {@link Html5.resetMediaElement}.
@ -25626,7 +25679,8 @@
}
/**
* Handle a double-click on the media element to enter/exit fullscreen
* Handle a double-click on the media element to enter/exit fullscreen,
* or exit documentPictureInPicture mode
*
* @param {Event} event
* the event that caused this function to trigger
@ -25653,6 +25707,12 @@
if (this.options_ === undefined || this.options_.userActions === undefined || this.options_.userActions.doubleClick === undefined || this.options_.userActions.doubleClick !== false) {
if (this.options_ !== undefined && this.options_.userActions !== undefined && typeof this.options_.userActions.doubleClick === 'function') {
this.options_.userActions.doubleClick.call(this, event);
} else if (this.isInPictureInPicture() && !document.pictureInPictureElement) {
// Checking the presence of `window.documentPictureInPicture.window` complicates
// tests, checking `document.pictureInPictureElement` also works. It wouldn't
// be null in regular picture in picture.
// Exit picture in picture mode. This gesture can't trigger pip on the main window.
this.exitPictureInPicture();
} else if (this.isFullscreen()) {
this.exitFullscreen();
} else {
@ -27225,6 +27285,41 @@
return false;
}
/**
* Add a <source> element to the <video> element.
*
* @param {string} srcUrl
* The URL of the video source.
*
* @param {string} [mimeType]
* The MIME type of the video source. Optional but recommended.
*
* @return {boolean}
* Returns true if the source element was successfully added, false otherwise.
*/
addSourceElement(srcUrl, mimeType) {
if (!this.tech_) {
return false;
}
return this.tech_.addSourceElement(srcUrl, mimeType);
}
/**
* Remove a <source> element from the <video> element by its URL.
*
* @param {string} srcUrl
* The URL of the source to remove.
*
* @return {boolean}
* Returns true if the source element was successfully removed, false otherwise.
*/
removeSourceElement(srcUrl) {
if (!this.tech_) {
return false;
}
return this.tech_.removeSourceElement(srcUrl);
}
/**
* Begin loading the src data.
*/
@ -37632,7 +37727,7 @@
var DOMParser = domParser.DOMParser;
/*! @name mpd-parser @version 1.3.0 @license Apache-2.0 */
/*! @name mpd-parser @version 1.3.1 @license Apache-2.0 */
const isObject = obj => {
return !!obj && typeof obj === 'object';
};
@ -38513,9 +38608,10 @@
const organizeVttPlaylists = (playlists, sidxMapping = {}) => {
return playlists.reduce((a, playlist) => {
const label = playlist.attributes.label || playlist.attributes.lang || 'text';
const language = playlist.attributes.lang || 'und';
if (!a[label]) {
a[label] = {
language: label,
language,
default: false,
autoselect: false,
playlists: [],
@ -40799,7 +40895,7 @@
};
var clock_1 = clock.ONE_SECOND_IN_TS;
/*! @name @videojs/http-streaming @version 3.14.2 @license Apache-2.0 */
/*! @name @videojs/http-streaming @version 3.15.0 @license Apache-2.0 */
/**
* @file resolve-url.js - Handling how URLs are resolved and manipulated
@ -63432,10 +63528,14 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
this.handleDurationChange_ = this.handleDurationChange_.bind(this);
this.handleSourceOpen_ = this.handleSourceOpen_.bind(this);
this.handleSourceEnded_ = this.handleSourceEnded_.bind(this);
this.load = this.load.bind(this);
this.pause = this.pause.bind(this);
this.mediaSource.addEventListener('durationchange', this.handleDurationChange_); // load the media source into the player
this.mediaSource.addEventListener('sourceopen', this.handleSourceOpen_);
this.mediaSource.addEventListener('sourceended', this.handleSourceEnded_); // we don't have to handle sourceclose since dispose will handle termination of
this.mediaSource.addEventListener('sourceended', this.handleSourceEnded_);
this.mediaSource.addEventListener('startstreaming', this.load);
this.mediaSource.addEventListener('endstreaming', this.pause); // we don't have to handle sourceclose since dispose will handle termination of
// everything, and the MediaSource should not be detached without a proper disposal
this.seekable_ = createTimeRanges();
@ -64159,6 +64259,19 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
this.subtitleSegmentLoader_.load();
}
}
/**
* Call pause on our SegmentLoaders
*/
pause() {
this.mainSegmentLoader_.pause();
if (this.mediaTypes_.AUDIO.activePlaylistLoader) {
this.audioSegmentLoader_.pause();
}
if (this.mediaTypes_.SUBTITLES.activePlaylistLoader) {
this.subtitleSegmentLoader_.pause();
}
}
/**
* Re-tune playback quality level for the current player
* conditions. This method will perform destructive actions like removing
@ -66221,9 +66334,9 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
const reloadSourceOnError = function (options) {
initPlugin(this, options);
};
var version$4 = "3.14.2";
var version$4 = "3.15.0";
var version$3 = "7.0.3";
var version$2 = "1.3.0";
var version$2 = "1.3.1";
var version$1 = "7.2.0";
var version = "4.0.2";
const Vhs = {
@ -67103,8 +67216,15 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
if (!this.tech_.el()) {
return;
}
this.mediaSourceUrl_ = window.URL.createObjectURL(this.playlistController_.mediaSource);
this.tech_.src(this.mediaSourceUrl_);
this.mediaSourceUrl_ = window.URL.createObjectURL(this.playlistController_.mediaSource); // If we are playing HLS with MSE in Safari, add source elements for both the blob and manifest URLs.
// The latter will enable Airplay playback on receiver devices.
if ((videojs.browser.IS_ANY_SAFARI || videojs.browser.IS_IOS) && this.options_.overrideNative && this.options_.sourceType === 'hls' && typeof this.tech_.addSourceElement === 'function') {
this.tech_.addSourceElement(this.mediaSourceUrl_);
this.tech_.addSourceElement(this.source_.src);
} else {
this.tech_.src(this.mediaSourceUrl_);
}
}
createKeySessions_() {
const audioPlaylistLoader = this.playlistController_.mediaTypes_.AUDIO.activePlaylistLoader;