@galacean/effects-plugin-multimedia 2.8.0-alpha.5 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +79 -7
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +79 -9
- package/dist/index.mjs.map +1 -1
- package/dist/utils.d.ts +30 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player multimedia plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 云垣
|
|
6
|
-
* Version: v2.8.0
|
|
6
|
+
* Version: v2.8.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -269,7 +269,13 @@ var multimediaErrorDisplayMessageMap = {
|
|
|
269
269
|
2000: "音视频自动播放权限未开启"
|
|
270
270
|
};
|
|
271
271
|
|
|
272
|
-
|
|
272
|
+
/**
|
|
273
|
+
* 处理多媒体资源加载
|
|
274
|
+
* @param media - 多媒体资源数组
|
|
275
|
+
* @param type - 多媒体类型(视频或音频)
|
|
276
|
+
* @param options - 场景加载选项
|
|
277
|
+
* @returns 加载完成的多媒体资源数组
|
|
278
|
+
*/ function processMultimedia(media, type, options) {
|
|
273
279
|
return _processMultimedia.apply(this, arguments);
|
|
274
280
|
}
|
|
275
281
|
function _processMultimedia() {
|
|
@@ -279,11 +285,13 @@ function _processMultimedia() {
|
|
|
279
285
|
renderLevel = options.renderLevel;
|
|
280
286
|
jobs = media.map(function(medium) {
|
|
281
287
|
if (EFFECTS.passRenderLevel(medium.renderLevel, renderLevel)) {
|
|
282
|
-
var url = new URL(medium.url, location.href).href;
|
|
283
288
|
if (type === EFFECTS.spec.MultimediaType.video) {
|
|
289
|
+
var videoURL = getVideoUrl(medium, options);
|
|
290
|
+
var url = new URL(videoURL, location.href).href;
|
|
284
291
|
return EFFECTS.loadVideo(url);
|
|
285
292
|
} else if (type === EFFECTS.spec.MultimediaType.audio) {
|
|
286
|
-
|
|
293
|
+
var url1 = new URL(medium.url, location.href).href;
|
|
294
|
+
return loadAudio(url1);
|
|
287
295
|
}
|
|
288
296
|
}
|
|
289
297
|
throw new Error("Invalid " + type + " source: " + JSON.stringify(media) + ".");
|
|
@@ -298,6 +306,7 @@ function _processMultimedia() {
|
|
|
298
306
|
}
|
|
299
307
|
/**
|
|
300
308
|
* 判断音视频浏览器是否允许播放
|
|
309
|
+
* @throws {MultimediaError} 当浏览器不允许自动播放时抛出错误
|
|
301
310
|
*/ function checkAutoplayPermission() {
|
|
302
311
|
return _checkAutoplayPermission.apply(this, arguments);
|
|
303
312
|
}
|
|
@@ -344,7 +353,9 @@ function _checkAutoplayPermission() {
|
|
|
344
353
|
}
|
|
345
354
|
/**
|
|
346
355
|
* 异步加载一个音频文件
|
|
347
|
-
* @param url - 音频文件的 URL
|
|
356
|
+
* @param url - 音频文件的 URL
|
|
357
|
+
* @returns 返回 AudioBuffer(如果支持 AudioContext)或 HTMLAudioElement
|
|
358
|
+
* @throws {Error} 当音频加载失败时抛出错误
|
|
348
359
|
*/ function loadAudio(url) {
|
|
349
360
|
return _loadAudio.apply(this, arguments);
|
|
350
361
|
}
|
|
@@ -416,7 +427,9 @@ function _loadAudio() {
|
|
|
416
427
|
});
|
|
417
428
|
return _loadAudio.apply(this, arguments);
|
|
418
429
|
}
|
|
419
|
-
|
|
430
|
+
/**
|
|
431
|
+
* 多媒体错误类
|
|
432
|
+
*/ var MultimediaError = /*#__PURE__*/ function(Error1) {
|
|
420
433
|
_inherits(MultimediaError, Error1);
|
|
421
434
|
function MultimediaError(code, message) {
|
|
422
435
|
var _this;
|
|
@@ -430,6 +443,63 @@ var MultimediaError = /*#__PURE__*/ function(Error1) {
|
|
|
430
443
|
}
|
|
431
444
|
return MultimediaError;
|
|
432
445
|
}(_wrap_native_super(Error));
|
|
446
|
+
/**
|
|
447
|
+
* 检查浏览器是否支持播放指定的 HEVC 编解码器
|
|
448
|
+
* @param codec - HEVC 编解码器
|
|
449
|
+
* @returns 如果浏览器可能或确定支持该编解码器,则返回 true,否则返回 false
|
|
450
|
+
*/ function canPlayHevcCodec(codec) {
|
|
451
|
+
var video = document.createElement("video");
|
|
452
|
+
var contentType = 'video/mp4; codecs="' + codec + '"';
|
|
453
|
+
var result = video.canPlayType(contentType);
|
|
454
|
+
return result === "probably" || result === "maybe";
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* 将编解码器字符串解析为 HEVC 视频编解码器枚举值
|
|
458
|
+
* @param codec - 编解码器字符串(可以是枚举值或枚举名称)
|
|
459
|
+
* @returns 对应的 HEVC 视频编解码器枚举值,如果无效则返回 undefined
|
|
460
|
+
*/ function parseCodec(codec) {
|
|
461
|
+
// 传入的是完整的枚举值
|
|
462
|
+
if (isCodecValue(codec)) {
|
|
463
|
+
return codec;
|
|
464
|
+
}
|
|
465
|
+
// 传入的是枚举名称
|
|
466
|
+
if (isCodecKey(codec)) {
|
|
467
|
+
return EFFECTS.spec.HevcVideoCodec[codec];
|
|
468
|
+
}
|
|
469
|
+
return undefined;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* 检查给定字符串是否为有效的 HEVC 枚举值
|
|
473
|
+
* @param codec - 待检查的字符串
|
|
474
|
+
* @returns 如果是有效的枚举值则返回 true
|
|
475
|
+
*/ function isCodecValue(codec) {
|
|
476
|
+
return Object.keys(EFFECTS.spec.HevcVideoCodec).some(function(key) {
|
|
477
|
+
return EFFECTS.spec.HevcVideoCodec[key] === codec;
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* 检查给定字符串是否为有效的 HEVC 枚举键名
|
|
482
|
+
* @param codec - 待检查的字符串
|
|
483
|
+
* @returns 如果是有效的枚举键名则返回 true
|
|
484
|
+
*/ function isCodecKey(codec) {
|
|
485
|
+
return codec in EFFECTS.spec.HevcVideoCodec;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* 获取视频 URL,根据配置和浏览器能力选择最优的视频源
|
|
489
|
+
* @param medium - 媒体资源对象
|
|
490
|
+
* @param options - 场景加载选项
|
|
491
|
+
* @returns 最优的视频 URL(优先返回 HEVC 格式,如果支持的话)
|
|
492
|
+
*/ function getVideoUrl(medium, options) {
|
|
493
|
+
if (!options.useHevcVideo) {
|
|
494
|
+
return medium.url;
|
|
495
|
+
}
|
|
496
|
+
var hevc = medium.hevc;
|
|
497
|
+
if (!(hevc == null ? void 0 : hevc.url) || !(hevc == null ? void 0 : hevc.codec)) {
|
|
498
|
+
return medium.url;
|
|
499
|
+
}
|
|
500
|
+
var codec = parseCodec(hevc.codec);
|
|
501
|
+
return codec && canPlayHevcCodec(codec) ? hevc.url : medium.url;
|
|
502
|
+
}
|
|
433
503
|
|
|
434
504
|
/**
|
|
435
505
|
* 视频加载插件
|
|
@@ -1142,7 +1212,7 @@ exports.AudioComponent = __decorate([
|
|
|
1142
1212
|
|
|
1143
1213
|
/**
|
|
1144
1214
|
* 插件版本号
|
|
1145
|
-
*/ var version = "2.8.0
|
|
1215
|
+
*/ var version = "2.8.0";
|
|
1146
1216
|
EFFECTS.registerPlugin("video", VideoLoader);
|
|
1147
1217
|
EFFECTS.registerPlugin("audio", AudioLoader);
|
|
1148
1218
|
EFFECTS.logger.info("Plugin multimedia version: " + version + ".");
|
|
@@ -1152,10 +1222,12 @@ if (version !== EFFECTS__namespace.version) {
|
|
|
1152
1222
|
|
|
1153
1223
|
exports.AudioPlayer = AudioPlayer;
|
|
1154
1224
|
exports.MultimediaError = MultimediaError;
|
|
1225
|
+
exports.canPlayHevcCodec = canPlayHevcCodec;
|
|
1155
1226
|
exports.checkAutoplayPermission = checkAutoplayPermission;
|
|
1156
1227
|
exports.loadAudio = loadAudio;
|
|
1157
1228
|
exports.multimediaErrorDisplayMessageMap = multimediaErrorDisplayMessageMap;
|
|
1158
1229
|
exports.multimediaErrorMessageMap = multimediaErrorMessageMap;
|
|
1230
|
+
exports.parseCodec = parseCodec;
|
|
1159
1231
|
exports.processMultimedia = processMultimedia;
|
|
1160
1232
|
exports.version = version;
|
|
1161
1233
|
//# sourceMappingURL=index.js.map
|