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