source移除仅对ios Safari生效
This commit is contained in:
+11
-1
@@ -3813,12 +3813,22 @@ function PlayPageClient() {
|
|||||||
if (!video || !url) return;
|
if (!video || !url) return;
|
||||||
const sources = Array.from(video.getElementsByTagName('source'));
|
const sources = Array.from(video.getElementsByTagName('source'));
|
||||||
const isHlsJsActive = !!(video as any).hls;
|
const isHlsJsActive = !!(video as any).hls;
|
||||||
|
const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
|
||||||
|
const isIOSWebKit =
|
||||||
|
/iPad|iPhone|iPod/i.test(userAgent) ||
|
||||||
|
(/Macintosh/i.test(userAgent) &&
|
||||||
|
typeof navigator !== 'undefined' &&
|
||||||
|
navigator.maxTouchPoints > 1);
|
||||||
|
const isSafari =
|
||||||
|
isIOSWebKit ||
|
||||||
|
(/Safari/i.test(userAgent) &&
|
||||||
|
!/Chrome|Chromium|Edg|OPR|Android/i.test(userAgent));
|
||||||
const isHlsLikeSource =
|
const isHlsLikeSource =
|
||||||
/\.m3u8?($|\?)/i.test(url) ||
|
/\.m3u8?($|\?)/i.test(url) ||
|
||||||
url.includes('/api/proxy-m3u8') ||
|
url.includes('/api/proxy-m3u8') ||
|
||||||
url.includes('/api/proxy/vod/m3u8');
|
url.includes('/api/proxy/vod/m3u8');
|
||||||
|
|
||||||
if (isHlsJsActive && isHlsLikeSource) {
|
if (isSafari && isHlsJsActive && isHlsLikeSource) {
|
||||||
// HLS 由 hls.js 接管时,不能再给 <video> 塞原始 m3u8 source,
|
// HLS 由 hls.js 接管时,不能再给 <video> 塞原始 m3u8 source,
|
||||||
// 否则 Safari 可能切回原生 HLS,和 MSE/hls.js 抢同一个播放器。
|
// 否则 Safari 可能切回原生 HLS,和 MSE/hls.js 抢同一个播放器。
|
||||||
sources.forEach((s) => s.remove());
|
sources.forEach((s) => s.remove());
|
||||||
|
|||||||
Reference in New Issue
Block a user