@realsee/vreo 2.4.6 → 2.5.0-alpha.1
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/README.md +1 -1
- package/docs/.nojekyll +1 -0
- package/docs/assets/custom.css +78 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +127 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1640 -0
- package/docs/classes/Player.AudioLike.html +15 -0
- package/docs/classes/Player.Controller.html +87 -0
- package/docs/classes/Player.Player.html +54 -0
- package/docs/classes/Player.VideoAgentMesh.html +72 -0
- package/docs/classes/Player.VideoAgentScene.html +9 -0
- package/docs/demo/assets/AppReact-CkuqZtcS.js +1 -0
- package/docs/demo/assets/default-BQGCQRLt.css +1 -0
- package/docs/demo/assets/default-CVvVdmSW.js +5540 -0
- package/docs/demo/assets/dynamic-CO5wq52h.js +1 -0
- package/docs/demo/assets/examples-BCLzFApO.css +1 -0
- package/docs/demo/assets/examples-DfiAz2fR.js +25 -0
- package/docs/demo/assets/index-CBBSwaYT.js +1 -0
- package/docs/demo/assets/index-CmEXi2sK.css +1 -0
- package/docs/demo/assets/main-BF1tvUg-.js +25 -0
- package/docs/demo/assets/react-BnzBLum3.css +1 -0
- package/docs/demo/assets/react-C4h9qndP.js +25 -0
- package/docs/demo/examples.html +16 -0
- package/docs/demo/index-react-dynamic.html +18 -0
- package/docs/demo/index-react.html +19 -0
- package/docs/demo/index.html +19 -0
- package/docs/enums/Player.InfoPanelStyleEnum.html +3 -0
- package/docs/enums/Player.InfoPanelTypeEnum.html +4 -0
- package/docs/enums/Player.PanoEffectEnum.html +4 -0
- package/docs/enums/Player.PanoTagEnum.html +4 -0
- package/docs/enums/Player.PanoTagStyleEnum.html +6 -0
- package/docs/enums/Player.VreoKeyframeEnum.html +25 -0
- package/docs/enums/fivePlugins.CameraMovementEffect.html +3 -0
- package/docs/enums/fivePlugins.Rotation.html +4 -0
- package/docs/functions/custom.SpatialScenePanel.html +2 -0
- package/docs/functions/react.useVreoAction.html +8 -0
- package/docs/functions/react.useVreoEventCallback.html +10 -0
- package/docs/functions/react.useVreoPausedState.html +8 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +160 -0
- package/docs/interfaces/Player.Appearance.html +2 -0
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +3 -0
- package/docs/interfaces/Player.PlayerConfigs.html +20 -0
- package/docs/interfaces/Player.Vertex.html +5 -0
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +9 -0
- package/docs/interfaces/Player.VreoKeyframe.html +8 -0
- package/docs/interfaces/Player.VreoUnit.html +9 -0
- package/docs/interfaces/Player.VreoVideo.html +7 -0
- package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +8 -0
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +3 -0
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +5 -0
- package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -0
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +5 -0
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +4 -0
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +2 -0
- package/docs/interfaces/fivePlugins.Vector3Position.html +5 -0
- package/docs/interfaces/react.VreoActionCallbacks.html +18 -0
- package/docs/interfaces/react.VreoProviderProps.html +6 -0
- package/docs/modules/Player.html +1 -0
- package/docs/modules/custom.html +1 -0
- package/docs/modules/fivePlugins.html +1 -0
- package/docs/modules/react.html +1 -0
- package/docs/modules.html +1 -0
- package/docs/types/Player.AppSize.html +1 -0
- package/docs/types/Player.AudioLikeEvent.html +6 -0
- package/docs/types/Player.CameraMovementData.html +2 -0
- package/docs/types/Player.CustomData.html +2 -0
- package/docs/types/Player.InfoPanelData.html +7 -0
- package/docs/types/Player.ModelVideoData.html +9 -0
- package/docs/types/Player.PanoEffectData.html +4 -0
- package/docs/types/Player.PanoTagData.html +6 -0
- package/docs/types/Player.PanoTextLabelData.html +7 -0
- package/docs/types/Player.PrompterData.html +3 -0
- package/docs/types/Player.QuadrangleVertexs.html +2 -0
- package/docs/types/Player.Quaternion.html +6 -0
- package/docs/types/Player.UpdateVRPanoramaData.html +7 -0
- package/docs/types/Player.Vertexs.html +2 -0
- package/docs/types/Player.VideoEffectData.html +7 -0
- package/docs/types/Player.VreoKeyframeEvent.html +2 -0
- package/docs/types/Player.VreoKeyframeMap.html +6 -0
- package/docs/types/Player.VreoSubscribe.html +1 -0
- package/docs/types/Player.WaveAppearance.html +1 -0
- package/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html +1 -0
- package/docs/types/fivePlugins.MoveArgs.html +1 -0
- package/docs/types/fivePlugins.MoveOpts.html +1 -0
- package/docs/types/fivePlugins.RotateArgs.html +1 -0
- package/docs/types/fivePlugins.RotateOpts.html +1 -0
- package/docs/variables/fivePlugins.CSS3DRenderPlugin.html +3 -0
- package/docs/variables/fivePlugins.CameraMovementPlugin.html +2 -0
- package/docs/variables/fivePlugins.ModelTVVideoPlugin.html +1 -0
- package/docs/variables/react.VreoProvider.html +9 -0
- package/lib/PlayController/createHTMLAudioElement.js +5 -12
- package/lib/PlayController/index.js +27 -34
- package/lib/Player/App.js +25 -34
- package/lib/Player/Controller.d.ts +106 -2
- package/lib/Player/Controller.js +190 -78
- package/lib/Player/custom/SpatialScenePanel/index.js +20 -31
- package/lib/Player/hooks.js +6 -15
- package/lib/Player/index.d.ts +103 -0
- package/lib/Player/index.js +153 -45
- package/lib/Player/modules/Drawer/index.js +8 -17
- package/lib/Player/modules/PopUp/index.js +8 -17
- package/lib/Player/modules/ResizeObserver/index.js +10 -17
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +108 -7
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +157 -52
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +16 -25
- package/lib/Player/modules/VideoAgent/index.js +8 -17
- package/lib/Player/modules/Wave/index.js +24 -33
- package/lib/Player/modules/keyframes/BgMusic/index.js +13 -22
- package/lib/Player/modules/keyframes/CameraMovement/index.js +17 -26
- package/lib/Player/modules/keyframes/InfoPanel/index.js +13 -21
- package/lib/Player/modules/keyframes/ModelVideo/index.js +17 -26
- package/lib/Player/modules/keyframes/PanoEffect/index.js +21 -30
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +6 -14
- package/lib/Player/modules/keyframes/PanoTag/index.js +10 -18
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +19 -28
- package/lib/Player/modules/keyframes/Prompter/index.js +13 -22
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +16 -24
- package/lib/Player/modules/keyframes/VideoEffect/index.js +18 -28
- package/lib/Player/typings.js +1 -5
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +3 -9
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +6 -12
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +27 -37
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +3 -9
- package/lib/fivePlugins/CameraMovementPlugin/index.js +15 -22
- package/lib/fivePlugins/CameraMovementPlugin/typings.js +6 -10
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +9 -18
- package/lib/index.js +1 -12
- package/lib/react/index.d.ts +111 -0
- package/lib/react/index.js +148 -24
- package/lib/shared-utils/Audio.js +27 -37
- package/lib/shared-utils/AudioLike.js +22 -29
- package/lib/shared-utils/Preloader.js +1 -7
- package/lib/shared-utils/addResizeListener.js +4 -11
- package/lib/shared-utils/animationFrame/BetterTween.js +23 -33
- package/lib/shared-utils/animationFrame/index.js +4 -13
- package/lib/shared-utils/animationFrame/tween.js +9 -17
- package/lib/shared-utils/createTransMatrix.js +5 -14
- package/lib/shared-utils/getFileExpandedName.js +1 -7
- package/lib/shared-utils/getMediaInfo.js +8 -19
- package/lib/shared-utils/setElementDataset.js +1 -7
- package/lib/typings/VreoUnit.js +15 -17
- package/package.json +57 -6
- package/stylesheets/custom/SpatialScenePanel.css +7 -7
- package/stylesheets/default.css +1 -1
package/docs/index.html
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Vreo</title><meta name="description" content="Documentation for Vreo"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><link rel="stylesheet" href="assets/custom.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">Vreo</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>Vreo</h1></div><div class="tsd-panel tsd-typography"><h1 id="realseevreo" class="tsd-anchor-link">@realsee/vreo<a href="#realseevreo" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p><a href="https://www.npmjs.com/package/@realsee/vreo"><img src="https://img.shields.io/npm/v/@realsee/vreo.svg?style=flat-square&logo=npm&label=npm%20install%20@realsee/vreo" alt="npm version"></a></p>
|
|
2
|
+
<p><strong>Vreo</strong> (VR Video 缩写) 是基于如视三维渲染引擎 <a href="https://unpkg.com/@realsee/five/docs/index.html">Five</a> 和 用户界面构建库 <a href="https://reactjs.org/">React</a> 实现的如视 3D 空间剧本播放器。</p>
|
|
3
|
+
<h2 id="特性" class="tsd-anchor-link">特性<a href="#特性" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
|
4
|
+
<li>相机运镜:支持 3D 空间全景游走、旋转、分镜切换等类似于电影运镜的效果。</li>
|
|
5
|
+
<li>定制模块:提供弹幕提词、全景标签、视频广告、空间文本等模块定制能力。</li>
|
|
6
|
+
<li>内置特效:提供全景特效、视频特效、户改动画、模型特效等丰富动态效果。</li>
|
|
7
|
+
<li>独特的虚拟形象渲染能力:支持用户在 Web 页面模拟虚拟形象,配合语音讲解、相机运镜和定制特效,可实现智能化讲房功能。</li>
|
|
8
|
+
</ul>
|
|
9
|
+
<blockquote>
|
|
10
|
+
<p>访问 <a href="https://vr-static.realsee-cdn.cn/release/web/vreo/index.html?v=1">Vreo Demo</a> 体验功能。</p>
|
|
11
|
+
</blockquote>
|
|
12
|
+
<h2 id="安装说明" class="tsd-anchor-link">安装说明<a href="#安装说明" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
|
13
|
+
<li>由于 <code>@realsee/vreo</code> 依赖 <a href="https://unpkg.com/@realsee/five/docs/index.html">Five</a> 和 <a href="https://reactjs.org/">React</a> ,请务必同时安装相关依赖</li>
|
|
14
|
+
<li>根据项目的包管理器来安装:<pre><code class="bash"><span class="hl-0"># pnpm</span><br/><span class="hl-1">pnpm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-3">@realsee/vreo</span><span class="hl-2"> </span><span class="hl-3">@realsee/five</span><span class="hl-2"> </span><span class="hl-3">react</span><span class="hl-2"> </span><span class="hl-3">react-dom</span><span class="hl-2"> </span><span class="hl-4">--save</span><br/><span class="hl-0"># npm</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-3">@realsee/vreo</span><span class="hl-2"> </span><span class="hl-3">@realsee/five</span><span class="hl-2"> </span><span class="hl-3">react</span><span class="hl-2"> </span><span class="hl-3">react-dom</span><span class="hl-2"> </span><span class="hl-4">--save</span><br/><span class="hl-0"># yarn</span><br/><span class="hl-1">yarn</span><span class="hl-2"> </span><span class="hl-3">add</span><span class="hl-2"> </span><span class="hl-3">@realsee/vreo</span><span class="hl-2"> </span><span class="hl-3">@realsee/five</span><span class="hl-2"> </span><span class="hl-3">react</span><span class="hl-2"> </span><span class="hl-3">react-dom</span>
|
|
15
|
+
</code><button type="button">Copy</button></pre>
|
|
16
|
+
|
|
17
|
+
</li>
|
|
18
|
+
</ul>
|
|
19
|
+
<h2 id="快速上手" class="tsd-anchor-link">快速上手<a href="#快速上手" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>引入样式:</p>
|
|
20
|
+
<pre><code class="css"><span class="hl-2"> </span><span class="hl-0">/* @file xxx.css */</span><br/><span class="hl-2"> </span><span class="hl-5">@import</span><span class="hl-2"> </span><span class="hl-3">'@realsee/vreo/stylesheets/default.css'</span><span class="hl-2">;</span>
|
|
21
|
+
</code><button type="button">Copy</button></pre>
|
|
22
|
+
|
|
23
|
+
<p>或</p>
|
|
24
|
+
<pre><code class="jsx"><span class="hl-2"> </span><span class="hl-0">/* @file xxx.tsx | xxx.jsx */</span><br/><span class="hl-2"> </span><span class="hl-5">import</span><span class="hl-2"> </span><span class="hl-3">'@realsee/vreo/stylesheets/default.css'</span><span class="hl-2">;</span>
|
|
25
|
+
</code><button type="button">Copy</button></pre>
|
|
26
|
+
|
|
27
|
+
<p>examples:</p>
|
|
28
|
+
<pre><code class="tsx"><span class="hl-0">/* @file index.tsx | index.jsx */</span><br/><span class="hl-5">import</span><span class="hl-2"> </span><span class="hl-4">*</span><span class="hl-2"> </span><span class="hl-5">as</span><span class="hl-2"> </span><span class="hl-6">React</span><span class="hl-2"> </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'react'</span><br/><span class="hl-5">import</span><span class="hl-2"> { </span><span class="hl-6">Five</span><span class="hl-2"> } </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'@realsee/five'</span><br/><span class="hl-5">import</span><span class="hl-2"> { </span><span class="hl-6">Player</span><span class="hl-2"> } </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'@realsee/vreo'</span><br/><span class="hl-5">import</span><span class="hl-2"> </span><span class="hl-3">'@realsee/vreo/stylesheets/default.css'</span><span class="hl-2">;</span><br/><br/><span class="hl-0">// 创建 Five 实例</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">five</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Five</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-0">/* Five 配置项 */</span><br/><span class="hl-2">})</span><br/><br/><span class="hl-0">// 创建 Player 实例</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoPlayer</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Player</span><span class="hl-2">(</span><span class="hl-6">five</span><span class="hl-2">)</span><br/><br/><span class="hl-0">// 异步请求剧本数据</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoUnit</span><span class="hl-2"> = </span><span class="hl-5">await</span><span class="hl-2"> </span><span class="hl-1">fetch</span><span class="hl-2">(</span><span class="hl-3">'api/**/**'</span><span class="hl-2">)</span><br/><br/><span class="hl-0">// 加载剧本数据(剧本数据见下文)</span><br/><span class="hl-6">vreoPlayer</span><span class="hl-2">.</span><span class="hl-1">load</span><span class="hl-2">(</span><span class="hl-6">vreoUnit</span><span class="hl-2">)</span><br/><br/><span class="hl-0">// 播放</span><br/><span class="hl-6">vreoPlayer</span><span class="hl-2">.</span><span class="hl-1">play</span><span class="hl-2">()</span><br/><br/><span class="hl-0">// 暂停</span><br/><span class="hl-6">vreoPlayer</span><span class="hl-2">.</span><span class="hl-1">pause</span><span class="hl-2">()</span>
|
|
29
|
+
</code><button type="button">Copy</button></pre>
|
|
30
|
+
|
|
31
|
+
<h2 id="react-context--hooks-模式使用" class="tsd-anchor-link">React Context & Hooks 模式使用<a href="#react-context--hooks-模式使用" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><strong>Vreo</strong> 支持 <a href="https://reactjs.org/docs/context.html">React Context</a> 与 <a href="https://reactjs.org/docs/hooks-intro.html">Hooks</a> 相配合的模式使用,简单样例如下:</p>
|
|
32
|
+
<pre><code class="tsx"><span class="hl-0">/* @file App.tsx */</span><br/><br/><span class="hl-5">import</span><span class="hl-2"> </span><span class="hl-4">*</span><span class="hl-2"> </span><span class="hl-5">as</span><span class="hl-2"> </span><span class="hl-6">React</span><span class="hl-2"> </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'react'</span><br/><span class="hl-5">import</span><span class="hl-2"> </span><span class="hl-4">*</span><span class="hl-2"> </span><span class="hl-5">as</span><span class="hl-2"> </span><span class="hl-6">ReactDOM</span><span class="hl-2"> </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'react-dom'</span><br/><span class="hl-5">import</span><span class="hl-2"> { </span><span class="hl-6">Five</span><span class="hl-2">, </span><span class="hl-6">Work</span><span class="hl-2">, </span><span class="hl-6">parseWork</span><span class="hl-2"> } </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'@realsee/five'</span><br/><span class="hl-5">import</span><span class="hl-2"> { </span><span class="hl-6">createFiveProvider</span><span class="hl-2">, </span><span class="hl-6">FiveCanvas</span><span class="hl-2"> } </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'@realsee/five/react'</span><br/><span class="hl-5">import</span><span class="hl-2"> { </span><span class="hl-6">VreoProvider</span><span class="hl-2">, </span><span class="hl-6">useVreoAction</span><span class="hl-2"> } </span><span class="hl-5">from</span><span class="hl-2"> </span><span class="hl-3">'@realsee/vreo/lib/react'</span><br/><br/><span class="hl-0">// 创建 FiveProvider</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">FiveProvider</span><span class="hl-2"> = </span><span class="hl-1">createFiveProvider</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-0">/* Five 配置项 */</span><br/><span class="hl-2">})</span><br/><br/><span class="hl-0">// 播放组件</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-1">PlayButton</span><span class="hl-2">: </span><span class="hl-8">React</span><span class="hl-2">.</span><span class="hl-8">FC</span><span class="hl-2"> = () </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-4">const</span><span class="hl-2"> { </span><span class="hl-7">load</span><span class="hl-2">, </span><span class="hl-7">play</span><span class="hl-2">, </span><span class="hl-7">pause</span><span class="hl-2"> } = </span><span class="hl-1">useVreoAction</span><span class="hl-2">()</span><br/><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> (</span><br/><span class="hl-2"> </span><span class="hl-9"><></span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-10">button</span><br/><span class="hl-2"> </span><span class="hl-11">onClick</span><span class="hl-2">=</span><span class="hl-4">{async</span><span class="hl-12"> () </span><span class="hl-4">=></span><span class="hl-12"> {</span><br/><span class="hl-12"> </span><span class="hl-0">// 获取讲房数据</span><br/><span class="hl-12"> </span><span class="hl-4">const</span><span class="hl-12"> </span><span class="hl-7">vreoUnit</span><span class="hl-12"> </span><span class="hl-2">=</span><span class="hl-12"> </span><span class="hl-5">await</span><span class="hl-12"> </span><span class="hl-1">fetch</span><span class="hl-12">(</span><span class="hl-3">'api/**/**'</span><span class="hl-12">)</span><br/><span class="hl-12"> </span><span class="hl-0">// 载入数据</span><br/><span class="hl-12"> </span><span class="hl-5">await</span><span class="hl-12"> </span><span class="hl-1">load</span><span class="hl-12">(</span><span class="hl-6">vreoUnit</span><span class="hl-12">)</span><br/><span class="hl-12"> </span><span class="hl-0">// 播放</span><br/><span class="hl-12"> </span><span class="hl-1">play</span><span class="hl-12">()</span><br/><span class="hl-12"> }</span><span class="hl-4">}</span><br/><span class="hl-2"> </span><span class="hl-9">></span><br/><span class="hl-2"> 讲解</span><br/><span class="hl-2"> </span><span class="hl-9"></</span><span class="hl-10">button</span><span class="hl-9">></span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-10">button</span><span class="hl-2"> </span><span class="hl-11">onClick</span><span class="hl-2">=</span><span class="hl-4">{</span><span class="hl-12">() </span><span class="hl-4">=></span><span class="hl-12"> </span><span class="hl-1">pause</span><span class="hl-12">()</span><span class="hl-4">}</span><span class="hl-9">></span><span class="hl-2">暂停</span><span class="hl-9"></</span><span class="hl-10">button</span><span class="hl-9">></span><br/><span class="hl-2"> </span><span class="hl-9"></></span><br/><span class="hl-2"> )</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-1">App</span><span class="hl-2">: </span><span class="hl-8">React</span><span class="hl-2">.</span><span class="hl-8">FC</span><span class="hl-2"> = () </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> (</span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-8">FiveProvider</span><span class="hl-2"> </span><span class="hl-11">initialWork</span><span class="hl-2">=</span><span class="hl-4">{</span><span class="hl-6">work</span><span class="hl-4">}</span><span class="hl-9">></span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-8">FiveCanvas</span><span class="hl-2"> </span><span class="hl-11">width</span><span class="hl-2">=</span><span class="hl-4">{</span><span class="hl-6">width</span><span class="hl-4">}</span><span class="hl-2"> </span><span class="hl-11">height</span><span class="hl-2">=</span><span class="hl-4">{</span><span class="hl-6">height</span><span class="hl-4">}</span><span class="hl-2"> </span><span class="hl-9">/></span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-8">VreoProvider</span><span class="hl-9">></span><br/><span class="hl-2"> </span><span class="hl-4">{</span><span class="hl-0">/* React 渲染的其他模块 */</span><span class="hl-4">}</span><br/><span class="hl-2"> </span><span class="hl-9"><</span><span class="hl-8">PlayButton</span><span class="hl-2"> </span><span class="hl-9">/></span><br/><span class="hl-2"> </span><span class="hl-9"></</span><span class="hl-8">VreoProvider</span><span class="hl-9">></span><br/><span class="hl-2"> </span><span class="hl-9"></</span><span class="hl-8">FiveProvider</span><span class="hl-9">></span><br/><span class="hl-2"> )</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-6">ReactDOM</span><span class="hl-2">.</span><span class="hl-1">render</span><span class="hl-2">(</span><span class="hl-9"><</span><span class="hl-8">App</span><span class="hl-9">></</span><span class="hl-8">App</span><span class="hl-9">></span><span class="hl-2">, </span><span class="hl-6">document</span><span class="hl-2">.</span><span class="hl-1">getElementById</span><span class="hl-2">(</span><span class="hl-3">'app'</span><span class="hl-2">))</span>
|
|
33
|
+
</code><button type="button">Copy</button></pre>
|
|
34
|
+
|
|
35
|
+
<h2 id="剧本数据结构" class="tsd-anchor-link">剧本数据结构<a href="#剧本数据结构" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="结构描述" class="tsd-anchor-link">结构描述<a href="#结构描述" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>VreoUnit</strong> 是剧本数据结构的最小单元,用以描述音视频、剧本帧序列等信息。</p>
|
|
36
|
+
<p><strong>VreoUnit</strong> 数据结构样例如下:</p>
|
|
37
|
+
<pre><code class="json"><span class="hl-2">{</span><br/><span class="hl-2"> </span><span class="hl-13">"categoryId"</span><span class="hl-2">: </span><span class="hl-3">"257ac7a8-b00a-4a1b-88b8-76f93362c0dc"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"categoryText"</span><span class="hl-2">: </span><span class="hl-3">"讲房源户型"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"video"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"duration"</span><span class="hl-2">: </span><span class="hl-14">106278</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"start"</span><span class="hl-2">: </span><span class="hl-14">0</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"end"</span><span class="hl-2">: </span><span class="hl-14">106278</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"url"</span><span class="hl-2">: </span><span class="hl-3">"//url-host/***/xxx.mp4"</span><span class="hl-2"> </span><span class="hl-0">// "url" 如果是空字符串,则以 `AudioLike` 的逻辑进行执行。</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-13">"keyframes"</span><span class="hl-2">: [</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"uuid"</span><span class="hl-2">: </span><span class="hl-3">"ac70621b-4e00-442e-311c-befb5bd3f87f"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"type"</span><span class="hl-2">: </span><span class="hl-3">"PanoTextLabel"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"start"</span><span class="hl-2">: </span><span class="hl-14">27060</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"end"</span><span class="hl-2">: </span><span class="hl-14">42351</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"parsed"</span><span class="hl-2">: </span><span class="hl-4">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"data"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"text"</span><span class="hl-2">: </span><span class="hl-3">"戏剧人生"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"vertex"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">-0.8879207391906447</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">0.3829881941156301</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-1.8068334368800785</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-13">"fontSize"</span><span class="hl-2">: </span><span class="hl-14">16</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"uuid"</span><span class="hl-2">: </span><span class="hl-3">"ec1bbe11-ffee-4fe1-5823-46b6cad4e7d8"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"type"</span><span class="hl-2">: </span><span class="hl-3">"ModelVideo"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"start"</span><span class="hl-2">: </span><span class="hl-14">17452</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"end"</span><span class="hl-2">: </span><span class="hl-14">74901</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"parsed"</span><span class="hl-2">: </span><span class="hl-4">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"data"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"videoSrc"</span><span class="hl-2">: </span><span class="hl-3">"//url-host/release/web/videos/tv_ads/360/009.mp4"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"videoPosterSrc"</span><span class="hl-2">: </span><span class="hl-3">"//url-host/release/web/videos/posters/002.9203cf99.jpg"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"vertexs"</span><span class="hl-2">: [</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">0.07203829865103632</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">0.8215782650149405</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-1.7994856093044471</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">0.08971605109132826</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">-0.2930481300912484</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-1.798372293401237</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">2.367235599574914</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">-0.296526676652792</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-1.7934272967593008</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">2.3601990173854315</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">0.8691239478108612</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-1.7949685793090848</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> ]</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"uuid"</span><span class="hl-2">: </span><span class="hl-3">"f9245b1b-ca8d-4a6c-5616-d53cd9cf8c3c"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"type"</span><span class="hl-2">: </span><span class="hl-3">"PanoTag"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"start"</span><span class="hl-2">: </span><span class="hl-14">988</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"end"</span><span class="hl-2">: </span><span class="hl-14">69803</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"parsed"</span><span class="hl-2">: </span><span class="hl-4">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"data"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"text"</span><span class="hl-2">: </span><span class="hl-3">"一蓑烟雨任平生"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"vertex"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">3.4119340861387304</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">0.1283617853353691</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">-0.6533418002816742</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-13">"type"</span><span class="hl-2">: </span><span class="hl-3">"Image"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"imgUrl"</span><span class="hl-2">: </span><span class="hl-3">"//url-host/release/web/cat_music.f68fb9bb.gif"</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"uuid"</span><span class="hl-2">: </span><span class="hl-3">"d16138f3-fad1-412e-2df0-f66b61e0b38e"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"type"</span><span class="hl-2">: </span><span class="hl-3">"PanoEffect"</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"start"</span><span class="hl-2">: </span><span class="hl-14">2598</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"end"</span><span class="hl-2">: </span><span class="hl-14">7955</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"parsed"</span><span class="hl-2">: </span><span class="hl-4">false</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"data"</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-13">"twoVertexs"</span><span class="hl-2">: [</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">0.04138994383630945</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">-1.323667318114752</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">2.7873723200461096</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-13">"x"</span><span class="hl-2">: </span><span class="hl-14">-2.804123324007684</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"y"</span><span class="hl-2">: </span><span class="hl-14">-1.3249364005914073</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-13">"z"</span><span class="hl-2">: </span><span class="hl-14">3.068840643805892</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> ],</span><br/><span class="hl-2"> </span><span class="hl-13">"effect"</span><span class="hl-2">: </span><span class="hl-3">"Distance"</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> ]</span><br/><span class="hl-2">}</span>
|
|
38
|
+
</code><button type="button">Copy</button></pre>
|
|
39
|
+
|
|
40
|
+
<p><strong>VreoUnit</strong> 的字段说明:</p>
|
|
41
|
+
<ul>
|
|
42
|
+
<li>
|
|
43
|
+
<p><code>categoryId</code>、<code>categoryText</code>: 讲解的类别标识符和描述。</p>
|
|
44
|
+
</li>
|
|
45
|
+
<li>
|
|
46
|
+
<p><code>video</code>: 虚拟视频人物视频素材。</p>
|
|
47
|
+
<ul>
|
|
48
|
+
<li><code>duration</code>: 视频长度。</li>
|
|
49
|
+
<li><code>start</code>: 开始时间戳。</li>
|
|
50
|
+
<li><code>end</code>: 结束时间戳。</li>
|
|
51
|
+
<li><code>url</code>: 视频 CDN 地址。</li>
|
|
52
|
+
</ul>
|
|
53
|
+
</li>
|
|
54
|
+
</ul>
|
|
55
|
+
<blockquote>
|
|
56
|
+
<p>注意事项:<strong>视频素材必须是绿幕背景</strong>。</p>
|
|
57
|
+
</blockquote>
|
|
58
|
+
<ul>
|
|
59
|
+
<li>
|
|
60
|
+
<p><code>keyframes</code>:剧本帧集合。</p>
|
|
61
|
+
<ul>
|
|
62
|
+
<li><code>uuid</code>: 剧本帧 <code>uuid</code>。</li>
|
|
63
|
+
<li><code>type</code>: 剧本帧类别枚举,详见下文 <strong>剧本关键帧</strong> 部分。</li>
|
|
64
|
+
<li><code>start</code>: 触发时间戳。</li>
|
|
65
|
+
<li><code>end</code>: 结束时间戳。</li>
|
|
66
|
+
<li><code>parsed</code>: 解析状态。</li>
|
|
67
|
+
<li><code>data</code>: 当前剧本帧类别数据依赖。</li>
|
|
68
|
+
</ul>
|
|
69
|
+
</li>
|
|
70
|
+
</ul>
|
|
71
|
+
<blockquote>
|
|
72
|
+
<p><strong>如何获取剧本数据?</strong>
|
|
73
|
+
剧本服务及剧本编辑器公开版本尚在开发中,敬请期待。</p>
|
|
74
|
+
</blockquote>
|
|
75
|
+
<h3 id="剧本帧说明" class="tsd-anchor-link">剧本帧说明<a href="#剧本帧说明" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>Vreo</strong> 剧本行为是按照剧本关键帧来执行的,即根据音视频播放的时间序列命中剧本帧后,按照剧本帧的类型执行相机运镜、全景标签、模型特效等动作。</p>
|
|
76
|
+
<blockquote>
|
|
77
|
+
<p>目前支持多种类型剧本关键帧(详见:<a href="https://realsee-developer.github.io/vreo/enums/Player.VreoKeyframeEnum.html">Player.VreoKeyframeEnum</a>),后续会不断完善及添加新的剧本关键帧行为。</p>
|
|
78
|
+
</blockquote>
|
|
79
|
+
<p><strong>Vreo</strong> 内置了每一个剧本关键帧的 UI 动作行为,通过 <code>vreoplayer.on()</code> 可监听到相应的剧本关键帧的命中时机,并按需添加业务逻辑。</p>
|
|
80
|
+
<h3 id="剧本关键帧" class="tsd-anchor-link">剧本关键帧<a href="#剧本关键帧" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><h4 id="相机运镜" class="tsd-anchor-link">相机运镜<a href="#相机运镜" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>相机运镜</strong> 控制相机实现镜头位移、旋转、模态切换等模拟如视 3D 空间漫游的能力。</p>
|
|
81
|
+
<pre><code class="ts"><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">CameraMovementData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">effect</span><span class="hl-2">: </span><span class="hl-8">CameraMovementEffect</span><span class="hl-2"> </span><span class="hl-0">// 运镜效果</span><br/><span class="hl-2"> </span><span class="hl-6">mode</span><span class="hl-2">: </span><span class="hl-8">Mode</span><span class="hl-2"> </span><span class="hl-0">// Five.Mode</span><br/><span class="hl-2"> </span><span class="hl-6">panoIndex</span><span class="hl-2">: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 目标点位</span><br/><span class="hl-2"> </span><span class="hl-6">loop</span><span class="hl-2">?: </span><span class="hl-8">boolean</span><span class="hl-2"> </span><span class="hl-0">// 是否循环</span><br/><span class="hl-2"> </span><span class="hl-6">rotateSpeed</span><span class="hl-2">?: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 旋转速度</span><br/><span class="hl-2"> </span><span class="hl-6">rotation</span><span class="hl-2">?: </span><span class="hl-8">Rotation</span><span class="hl-2"> </span><span class="hl-0">// 旋转方向</span><br/><span class="hl-2">} & </span><span class="hl-8">Partial</span><span class="hl-2"><</span><span class="hl-8">Pose</span><span class="hl-2">> </span><span class="hl-0">// Partial<Pose> 视角信息</span>
|
|
82
|
+
</code><button type="button">Copy</button></pre>
|
|
83
|
+
|
|
84
|
+
<h4 id="弹幕提词" class="tsd-anchor-link">弹幕提词<a href="#弹幕提词" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>弹幕提词</strong> 提供语音字幕文本,多用于强调某一句文本。</p>
|
|
85
|
+
<pre><code class="ts"><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">PrompterData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">text</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 文本,建议长度 32(汉字) 以内</span><br/><span class="hl-2">}</span>
|
|
86
|
+
</code><button type="button">Copy</button></pre>
|
|
87
|
+
|
|
88
|
+
<h4 id="空间文本" class="tsd-anchor-link">空间文本<a href="#空间文本" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>空间文本</strong> 在如视 3D 模型空间中某一个三维坐标点上展示的一段文本。</p>
|
|
89
|
+
<pre><code class="ts"><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">PanoTextLabelData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">text</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 空间文本</span><br/><span class="hl-2"> </span><span class="hl-6">vertex</span><span class="hl-2">: </span><span class="hl-8">Vertex</span><span class="hl-2"> </span><span class="hl-0">// 三维坐标点</span><br/><span class="hl-2"> </span><span class="hl-6">fontSize</span><span class="hl-2">?: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 文本字体大小,默认 16px</span><br/><span class="hl-2">}</span>
|
|
90
|
+
</code><button type="button">Copy</button></pre>
|
|
91
|
+
|
|
92
|
+
<h4 id="信息面板" class="tsd-anchor-link">信息面板<a href="#信息面板" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>信息面板</strong> 以弹框或抽屉面板的形式展示图片、音视频等素材内容。</p>
|
|
93
|
+
<pre><code class="ts"><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">InfoPanelData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">type</span><span class="hl-2">: </span><span class="hl-8">InfoPanelTypeEnum</span><span class="hl-2"> </span><span class="hl-0">// 面板类型</span><br/><span class="hl-2"> </span><span class="hl-6">url</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 素材静态资源地址</span><br/><span class="hl-2">}</span>
|
|
94
|
+
</code><button type="button">Copy</button></pre>
|
|
95
|
+
|
|
96
|
+
<h4 id="全景标签" class="tsd-anchor-link">全景标签<a href="#全景标签" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>全景标签</strong> 在如视 3D 空间全景游走模态下展示文本、图片、视频等标签内容。全景标签的出现会附带一个生长动画。</p>
|
|
97
|
+
<pre><code class="ts"><span class="hl-4">enum</span><span class="hl-2"> </span><span class="hl-8">PanoTagEnum</span><span class="hl-2"> { </span><span class="hl-0">// 标签类型枚举</span><br/><span class="hl-2"> </span><span class="hl-7">Text</span><span class="hl-2"> = </span><span class="hl-3">'Text'</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">Image</span><span class="hl-2"> = </span><span class="hl-3">'Image'</span><span class="hl-2">,</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">PanoTagData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">type</span><span class="hl-2">: </span><span class="hl-8">PanoTagEnum</span><span class="hl-2"> </span><span class="hl-0">// 标签类型</span><br/><span class="hl-2"> </span><span class="hl-6">text</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 文本</span><br/><span class="hl-2"> </span><span class="hl-6">vertex</span><span class="hl-2">: </span><span class="hl-8">Vertex</span><span class="hl-2"> </span><span class="hl-0">// 标签在全景游走模态中的三维坐标点</span><br/><span class="hl-2"> </span><span class="hl-6">imgUrl</span><span class="hl-2">?: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 图片资源地址</span><br/><span class="hl-2">}</span>
|
|
98
|
+
</code><button type="button">Copy</button></pre>
|
|
99
|
+
|
|
100
|
+
<h4 id="全景特效" class="tsd-anchor-link">全景特效<a href="#全景特效" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>全景特效</strong> 指在如视 3D 空间全景游走模态下执行某些特效。</p>
|
|
101
|
+
<p>目前仅支持测量长度的特效。比如,在全景游走模态下标注出窗户的宽度信息。</p>
|
|
102
|
+
<pre><code class="ts"><span class="hl-4">enum</span><span class="hl-2"> </span><span class="hl-8">PanoEffectEnum</span><span class="hl-2"> { </span><span class="hl-0">// 特效枚举</span><br/><span class="hl-2"> </span><span class="hl-0">// 两点距离</span><br/><span class="hl-2"> </span><span class="hl-7">Distance</span><span class="hl-2"> = </span><span class="hl-3">'Distance'</span><span class="hl-2">,</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">PanoEffectData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">effect</span><span class="hl-2">: </span><span class="hl-8">PanoEffectEnum</span><span class="hl-2"> </span><span class="hl-0">// 特效类型</span><br/><span class="hl-2"> </span><span class="hl-6">twoVertexs</span><span class="hl-2">: [</span><span class="hl-8">Vertex</span><span class="hl-2">, </span><span class="hl-8">Vertex</span><span class="hl-2">] </span><span class="hl-0">// 两个点坐标值</span><br/><span class="hl-2">}</span>
|
|
103
|
+
</code><button type="button">Copy</button></pre>
|
|
104
|
+
|
|
105
|
+
<h4 id="模型特效" class="tsd-anchor-link">模型特效<a href="#模型特效" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><blockquote>
|
|
106
|
+
<p>规划中,敬请期待。</p>
|
|
107
|
+
</blockquote>
|
|
108
|
+
<h4 id="户改动画" class="tsd-anchor-link">户改动画<a href="#户改动画" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><blockquote>
|
|
109
|
+
<p>规划中,敬请期待。</p>
|
|
110
|
+
</blockquote>
|
|
111
|
+
<h4 id="更换全景" class="tsd-anchor-link">更换全景<a href="#更换全景" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>更换全景</strong> 可以动态修改某个点位的全景图片。</p>
|
|
112
|
+
<pre><code class="ts"><span class="hl-5">export</span><span class="hl-2"> </span><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">UpdateVRPanoramaData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">_signature</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 签名字段</span><br/><span class="hl-2"> </span><span class="hl-6">allow_hosts</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2">[] </span><span class="hl-0">// 域名白名单</span><br/><span class="hl-2"> </span><span class="hl-6">certificate</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 签名值</span><br/><span class="hl-2"> </span><span class="hl-6">expire_at</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 过期时间</span><br/><span class="hl-2"> </span><span class="hl-0">// 动态场景</span><br/><span class="hl-2"> </span><span class="hl-6">dynamic_scene</span><span class="hl-2">?: {</span><br/><span class="hl-2"> </span><span class="hl-6">images</span><span class="hl-2">: { </span><span class="hl-0">// 切换全景的图片</span><br/><span class="hl-2"> </span><span class="hl-6">index</span><span class="hl-2">: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 对应的全景点位</span><br/><span class="hl-2"> </span><span class="hl-6">right</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> </span><span class="hl-6">left</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> </span><span class="hl-6">up</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> </span><span class="hl-6">down</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> </span><span class="hl-6">front</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> </span><span class="hl-6">back</span><span class="hl-2">: </span><span class="hl-8">string</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> [</span><span class="hl-6">key</span><span class="hl-2">: </span><span class="hl-6">string</span><span class="hl-2">]: </span><span class="hl-8">any</span><br/><span class="hl-2">}</span>
|
|
113
|
+
</code><button type="button">Copy</button></pre>
|
|
114
|
+
|
|
115
|
+
<p>比如,您可以拍摄某个房间开灯与关灯两个场景的全景,通过动态切换可以营造出全景中开灯、关灯的效果。</p>
|
|
116
|
+
<p>同样的,如果您在同一个位置分别拍摄了早晨、上午、中午、下午、傍晚、深夜的全景图片,就可以营造出该位置在一天中不同时间段的光照效果。</p>
|
|
117
|
+
<h4 id="视频广告" class="tsd-anchor-link">视频广告<a href="#视频广告" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>视频广告</strong> 如果在如视 3D 空间模型中有电视、显示器、壁画等这类物品,可以在这些矩形区域播放一段视频。</p>
|
|
118
|
+
<pre><code class="ts"><span class="hl-0">// 四个顶点元组</span><br/><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">QuadrangleVertexs</span><span class="hl-2"> = [</span><span class="hl-8">Vertex</span><span class="hl-2">, </span><span class="hl-8">Vertex</span><span class="hl-2">, </span><span class="hl-8">Vertex</span><span class="hl-2">, </span><span class="hl-8">Vertex</span><span class="hl-2">]</span><br/><br/><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">ModelVideoData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">videoSrc</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 视频素材</span><br/><span class="hl-2"> </span><span class="hl-6">videoPosterSrc</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 视频封面</span><br/><span class="hl-2"> </span><span class="hl-6">vertexs</span><span class="hl-2">: </span><span class="hl-8">QuadrangleVertexs</span><span class="hl-2"> </span><span class="hl-0">// 视频映射在模型中的坐标点</span><br/><span class="hl-2">}</span>
|
|
119
|
+
</code><button type="button">Copy</button></pre>
|
|
120
|
+
|
|
121
|
+
<h4 id="视频特效" class="tsd-anchor-link">视频特效<a href="#视频特效" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>视频特效</strong> 是基于视频实现的动画效果,视频的每一帧都与 VR 全景位置完全贴合。</p>
|
|
122
|
+
<p>某些变形动画(比如开冰箱动作这类)可以采用视频特效来实现。</p>
|
|
123
|
+
<pre><code class="ts"><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">VideoEffectData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">videoSrc</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// 视频地址</span><br/><span class="hl-2"> </span><span class="hl-6">panoIndex</span><span class="hl-2">: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 所处点位</span><br/><span class="hl-2"> </span><span class="hl-6">fov</span><span class="hl-2">: </span><span class="hl-8">number</span><span class="hl-2"> </span><span class="hl-0">// 镜头远近</span><br/><span class="hl-2"> </span><span class="hl-6">direction</span><span class="hl-2">?: </span><span class="hl-8">Vertex</span><span class="hl-2"> </span><span class="hl-0">// 方向向量: {x, y, z} 形式</span><br/><span class="hl-2"> </span><span class="hl-6">vector</span><span class="hl-2">?: </span><span class="hl-8">Pick</span><span class="hl-2"><</span><span class="hl-8">Pose</span><span class="hl-2">, </span><span class="hl-3">'longitude'</span><span class="hl-2"> | </span><span class="hl-3">'latitude'</span><span class="hl-2">> </span><span class="hl-0">// 方向向量: 向量坐标</span><br/><span class="hl-2">}</span>
|
|
124
|
+
</code><button type="button">Copy</button></pre>
|
|
125
|
+
|
|
126
|
+
<h4 id="背景音乐" class="tsd-anchor-link">背景音乐<a href="#背景音乐" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p><strong>背景音乐</strong> 给剧本添加一段背景音乐(背景音乐会与讲稿音频并行播放)。</p>
|
|
127
|
+
<pre><code class="ts"><span class="hl-5">export</span><span class="hl-2"> </span><span class="hl-4">type</span><span class="hl-2"> </span><span class="hl-8">BgMusicData</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-6">url</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2"> </span><span class="hl-0">// .mp3 背景音乐 CDN 地址</span><br/><span class="hl-2">}</span>
|
|
128
|
+
</code><button type="button">Copy</button></pre>
|
|
129
|
+
|
|
130
|
+
<h3 id="自定义剧本帧行为" class="tsd-anchor-link">自定义剧本帧行为<a href="#自定义剧本帧行为" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>Vreo</strong> 中的剧本帧行为是内置的,但如果您有强烈的诸如统一 UI 风格类的诉求,不想使用内置剧本逻辑,也可以通过 <code>new Player(five, {keyframeMap: {PanoTag: false}})</code> 来禁用内置剧本帧解析,然后通过监听剧本帧触发事件来补充您自己的剧本 UI 行为。</p>
|
|
131
|
+
<p>比如,禁用全景标签的解析:</p>
|
|
132
|
+
<pre><code class="ts"><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoplayer</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Player</span><span class="hl-2">(</span><span class="hl-6">five</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-6">keyframeMap:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">PanoTag:</span><span class="hl-2"> </span><span class="hl-4">false</span><span class="hl-2"> </span><span class="hl-0">/* 禁用了全景标签的解析 */</span><span class="hl-2">,</span><br/><span class="hl-2"> },</span><br/><span class="hl-2">})</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-1">callback</span><span class="hl-2"> = (</span><span class="hl-6">keyframe</span><span class="hl-2">: </span><span class="hl-8">VreoKeyframe</span><span class="hl-2">) </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-0">/* 您自己的业务逻辑:全景标签的模块 */</span><br/><span class="hl-2">}</span><br/><span class="hl-0">// 添加监听</span><br/><span class="hl-6">vreoplayer</span><span class="hl-2">.</span><span class="hl-1">on</span><span class="hl-2">(</span><span class="hl-6">VreoKeyframeEnum</span><span class="hl-2">.</span><span class="hl-6">PanoTag</span><span class="hl-2">, </span><span class="hl-6">callback</span><span class="hl-2">)</span><br/><span class="hl-0">// 关闭监听</span><br/><span class="hl-6">vreoplayer</span><span class="hl-2">.</span><span class="hl-1">off</span><span class="hl-2">(</span><span class="hl-6">VreoKeyframeEnum</span><span class="hl-2">.</span><span class="hl-6">PanoTag</span><span class="hl-2">, </span><span class="hl-6">callback</span><span class="hl-2">)</span>
|
|
133
|
+
</code><button type="button">Copy</button></pre>
|
|
134
|
+
|
|
135
|
+
<p>目前仅 DOM 相关的剧本关键帧支持自定义,与 3D 空间模型相关的内容(如:运镜、特效等)尚不支持用户自定义,请采用内置方案。</p>
|
|
136
|
+
<h3 id="自定义剧本帧" class="tsd-anchor-link">自定义剧本帧<a href="#自定义剧本帧" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>除了默认内置的剧本帧之外,<strong>Vreo</strong> 支持自定义剧本帧。你可以将剧本帧类型设定为 <code>VreoKeyframeEnum.Custom</code>,然后通过监听 <code>vreoplayer.on(VreoKeyframeEnum.Custom, callback)</code> 剧本事件去解析你自己定义的剧本行为。</p>
|
|
137
|
+
<p>此外,你也可以实现个 <code>React</code> 组件,例如:</p>
|
|
138
|
+
<pre><code class="ts"><span class="hl-5">export</span><span class="hl-2"> </span><span class="hl-4">function</span><span class="hl-2"> </span><span class="hl-1">YourCustomKeyframe</span><span class="hl-2">(</span><span class="hl-6">props</span><span class="hl-2">: </span><span class="hl-8">CustomVreoKeyframeProps</span><span class="hl-2">) {</span><br/><br/><span class="hl-2"> </span><span class="hl-6">React</span><span class="hl-2">.</span><span class="hl-1">useEffect</span><span class="hl-2">(() </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">props</span><span class="hl-2">.</span><span class="hl-6">subscribe</span><span class="hl-2">.</span><span class="hl-1">on</span><span class="hl-2">(</span><span class="hl-6">VreoKeyframeEnum</span><span class="hl-2">.</span><span class="hl-6">Custom</span><span class="hl-2">, </span><span class="hl-6">callback</span><span class="hl-2">)</span><br/><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> () </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">props</span><span class="hl-2">.</span><span class="hl-6">subscribe</span><span class="hl-2">.</span><span class="hl-1">off</span><span class="hl-2">(</span><span class="hl-6">VreoKeyframeEnum</span><span class="hl-2">.</span><span class="hl-6">Custom</span><span class="hl-2">, </span><span class="hl-6">callback</span><span class="hl-2">)</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> }, [])</span><br/><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> <>...</></span><br/><span class="hl-2">}</span>
|
|
139
|
+
</code><button type="button">Copy</button></pre>
|
|
140
|
+
|
|
141
|
+
<p>然后通过 <code>new Player(five, {customKeyframes: [YourCustomKeyframe]})</code> 配置参数添加进去即可。</p>
|
|
142
|
+
<h2 id="注意事项" class="tsd-anchor-link">注意事项<a href="#注意事项" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="兼容性" class="tsd-anchor-link">兼容性<a href="#兼容性" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>浏览器对视频自动播放有严格的限制(播放行为必须由用户触发),<code>@realsee/vreo</code> 内部已经最大限度规避了浏览器对视频自动播放的限制。</p>
|
|
143
|
+
<p>但是规避 <a href="https://developers.weixin.qq.com/community/develop/doc/000e640d77cfa001132a6cb8456c01">微信浏览器中音视频自动播放限制</a> 需要调用 <a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html">微信 JS-SDK</a> 触发<code>WeixinJSBridgeReady</code>事件后才能实现。</p>
|
|
144
|
+
<p>虽然 <code>@realsee/vreo</code> 并不依赖 <a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html">微信 JS-SDK</a> ,但您可以提前创建<code>HTMLVideoElement</code>实例,然后再在初始化<code>vreoplayer</code>实例时通过配置项指定 <code>HTMLVideoElement</code>实例,可参考:</p>
|
|
145
|
+
<pre><code class="ts"><span class="hl-0">// 创建 HTMLVideoElement 实例</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-1">creatVideo</span><span class="hl-2"> = (): </span><span class="hl-8">HTMLVideoElement</span><span class="hl-2"> </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">video</span><span class="hl-2"> = </span><span class="hl-6">document</span><span class="hl-2">.</span><span class="hl-1">createElement</span><span class="hl-2">(</span><span class="hl-3">'video'</span><span class="hl-2">)</span><br/><br/><span class="hl-2"> </span><span class="hl-6">video</span><span class="hl-2">.</span><span class="hl-1">setAttribute</span><span class="hl-2">(</span><span class="hl-3">'playsinline'</span><span class="hl-2">, </span><span class="hl-3">'true'</span><span class="hl-2">)</span><br/><span class="hl-2"> </span><span class="hl-6">video</span><span class="hl-2">.</span><span class="hl-1">setAttribute</span><span class="hl-2">(</span><span class="hl-3">'webkit-playsinline'</span><span class="hl-2">, </span><span class="hl-3">'true'</span><span class="hl-2">)</span><br/><span class="hl-2"> </span><span class="hl-6">video</span><span class="hl-2">.</span><span class="hl-1">setAttribute</span><span class="hl-2">(</span><span class="hl-3">'autoplay'</span><span class="hl-2">, </span><span class="hl-3">'true'</span><span class="hl-2">)</span><br/><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> </span><span class="hl-6">video</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-1">creatAudio</span><span class="hl-2"> = (): </span><span class="hl-8">HTMLVideoElement</span><span class="hl-2"> </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">audio</span><span class="hl-2"> = </span><span class="hl-6">document</span><span class="hl-2">.</span><span class="hl-1">createElement</span><span class="hl-2">(</span><span class="hl-3">'audio'</span><span class="hl-2">)</span><br/><br/><span class="hl-2"> </span><span class="hl-6">audio</span><span class="hl-2">.</span><span class="hl-1">setAttribute</span><span class="hl-2">(</span><span class="hl-3">'autoplay'</span><span class="hl-2">, </span><span class="hl-3">'true'</span><span class="hl-2">)</span><br/><br/><span class="hl-2"> </span><span class="hl-5">return</span><span class="hl-2"> </span><span class="hl-6">audio</span><br/><span class="hl-2">}</span><br/><br/><span class="hl-0">// 提前创建 Video</span><br/><span class="hl-0">// 视频特效</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">videoEffect</span><span class="hl-2"> = </span><span class="hl-1">creatVideo</span><span class="hl-2">()</span><br/><span class="hl-0">// 视频广告</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">modelTVVideo</span><span class="hl-2"> = </span><span class="hl-1">creatVideo</span><span class="hl-2">()</span><br/><span class="hl-0">// 视频数字人形象</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">videoInstance</span><span class="hl-2"> = </span><span class="hl-1">creatVideo</span><span class="hl-2">()</span><br/><span class="hl-0">// 无数字人,仅音频</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">audioInstance</span><span class="hl-2"> = </span><span class="hl-1">createAudio</span><span class="hl-2">()</span><br/><br/><span class="hl-0">// 微信限制:需在 WeixinJSBridgeReady 回调中触发一次</span><br/><span class="hl-6">document</span><span class="hl-2">.</span><span class="hl-1">addEventListener</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-3">'WeixinJSBridgeReady'</span><span class="hl-2">,</span><br/><span class="hl-2"> () </span><span class="hl-4">=></span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">videoEffect</span><span class="hl-2">.</span><span class="hl-1">play</span><span class="hl-2">()</span><br/><span class="hl-2"> </span><span class="hl-6">modelTVVideo</span><span class="hl-2">.</span><span class="hl-1">play</span><span class="hl-2">()</span><br/><span class="hl-2"> </span><span class="hl-6">videoInstance</span><span class="hl-2">.</span><span class="hl-1">play</span><span class="hl-2">()</span><br/><span class="hl-2"> </span><span class="hl-6">audioInstance</span><span class="hl-2">.</span><span class="hl-1">play</span><span class="hl-2">()</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-4">false</span><br/><span class="hl-2">)</span><br/><br/><span class="hl-0">// 创建 Player 实例</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoplayer</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Player</span><span class="hl-2">(</span><span class="hl-6">five</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-6">videos:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">videoEffect</span><span class="hl-2">, </span><span class="hl-0">// 视频特效 时依赖的 HTMLVideoElement</span><br/><span class="hl-2"> </span><span class="hl-6">modelTVVideo</span><span class="hl-2">, </span><span class="hl-0">// 视频广告 时依赖的 HTMLVideoElement</span><br/><span class="hl-2"> },</span><br/><span class="hl-2"> </span><span class="hl-6">videoAgentMeshOptions:</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-6">videoInstance</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-6">audioInstance</span><span class="hl-2">,</span><br/><span class="hl-2"> }</span><br/><span class="hl-2">})</span>
|
|
146
|
+
</code><button type="button">Copy</button></pre>
|
|
147
|
+
|
|
148
|
+
<p>这样,在微信浏览器或微信小程序 <code>WebView</code> 中也能正常使用自动播效果。</p>
|
|
149
|
+
<h3 id="性能优化" class="tsd-anchor-link">性能优化<a href="#性能优化" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>提高播放性能目前有两个策略:降低贴图分辨率和提前预载。</p>
|
|
150
|
+
<h4 id="降低图片分辨率" class="tsd-anchor-link">降低图片分辨率<a href="#降低图片分辨率" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p>可以设置 <code>five.imageOptions.size</code> 来降低渲染引擎的贴图尺寸,这样下载速度会变快且内存占用也会降低。
|
|
151
|
+
你也可以配置 <strong>Vreo</strong> 参数来达到类似的效果:</p>
|
|
152
|
+
<pre><code class="ts"><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoplayer</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Player</span><span class="hl-2">(</span><span class="hl-6">five</span><span class="hl-2">, { </span><span class="hl-6">imageOptions:</span><span class="hl-2"> { </span><span class="hl-6">size:</span><span class="hl-2"> </span><span class="hl-14">1024</span><span class="hl-2"> } })</span>
|
|
153
|
+
</code><button type="button">Copy</button></pre>
|
|
154
|
+
|
|
155
|
+
<h4 id="提前预载" class="tsd-anchor-link">提前预载<a href="#提前预载" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p>如果网络不稳定,可以提前预载静态资源,这样播放过程中不会卡顿:</p>
|
|
156
|
+
<pre><code class="ts"><span class="hl-0">// 全局预载</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-7">vreoplayer</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">Player</span><span class="hl-2">(</span><span class="hl-6">five</span><span class="hl-2">, { </span><span class="hl-6">autoPreload:</span><span class="hl-2"> </span><span class="hl-4">true</span><span class="hl-2"> })</span><br/><br/><span class="hl-0">// 针对某一份剧本数据预载</span><br/><span class="hl-6">vreoplayer</span><span class="hl-2">.</span><span class="hl-1">load</span><span class="hl-2">(</span><span class="hl-6">vreoUnit</span><span class="hl-2">, </span><span class="hl-14">0</span><span class="hl-2">, </span><span class="hl-4">true</span><span class="hl-2">)</span><br/>
|
|
157
|
+
</code><button type="button">Copy</button></pre>
|
|
158
|
+
|
|
159
|
+
<p>Enjoy it!</p>
|
|
160
|
+
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#realseevreo"><span>@realsee/vreo</span></a><ul><li><a href="#特性"><span>特性</span></a></li><li><a href="#安装说明"><span>安装说明</span></a></li><li><a href="#快速上手"><span>快速上手</span></a></li><li><a href="#react-context--hooks-模式使用"><span>React <wbr/>Context & <wbr/>Hooks 模式使用</span></a></li><li><a href="#剧本数据结构"><span>剧本数据结构</span></a></li><li><ul><li><a href="#结构描述"><span>结构描述</span></a></li><li><a href="#剧本帧说明"><span>剧本帧说明</span></a></li><li><a href="#剧本关键帧"><span>剧本关键帧</span></a></li><li><ul><li><a href="#相机运镜"><span>相机运镜</span></a></li><li><a href="#弹幕提词"><span>弹幕提词</span></a></li><li><a href="#空间文本"><span>空间文本</span></a></li><li><a href="#信息面板"><span>信息面板</span></a></li><li><a href="#全景标签"><span>全景标签</span></a></li><li><a href="#全景特效"><span>全景特效</span></a></li><li><a href="#模型特效"><span>模型特效</span></a></li><li><a href="#户改动画"><span>户改动画</span></a></li><li><a href="#更换全景"><span>更换全景</span></a></li><li><a href="#视频广告"><span>视频广告</span></a></li><li><a href="#视频特效"><span>视频特效</span></a></li><li><a href="#背景音乐"><span>背景音乐</span></a></li></ul></li><li><a href="#自定义剧本帧行为"><span>自定义剧本帧行为</span></a></li><li><a href="#自定义剧本帧"><span>自定义剧本帧</span></a></li></ul></li><li><a href="#注意事项"><span>注意事项</span></a></li><li><ul><li><a href="#兼容性"><span>兼容性</span></a></li><li><a href="#性能优化"><span>性能优化</span></a></li><li><ul><li><a href="#降低图片分辨率"><span>降低图片分辨率</span></a></li><li><a href="#提前预载"><span>提前预载</span></a></li></ul></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">Vreo</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Appearance | Vreo</title><meta name="description" content="Documentation for Vreo"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><link rel="stylesheet" href="../assets/custom.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">Vreo</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/Player.html">Player</a></li><li><a href="" aria-current="page">Appearance</a></li></ul><h1>Interface Appearance</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">Appearance</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#wavestyle">waveStyle</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">"solid"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"wave"</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/realsee-developer/vreo/blob/3f320df245d675ce6791288bcbaeb220a84de210/resources/Player/typings.ts#L48">resources/Player/typings.ts:48</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#wavestyle" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>wave<wbr/>Style?</span></a>
|
|
2
|
+
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="wavestyle"><code class="tsd-tag">Optional</code><span>wave<wbr/>Style</span><a href="#wavestyle" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">waveStyle</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">"solid"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"wave"</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/realsee-developer/vreo/blob/3f320df245d675ce6791288bcbaeb220a84de210/resources/Player/typings.ts#L49">resources/Player/typings.ts:49</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#wavestyle"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>wave<wbr/>Style</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">Vreo</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CustomVreoKeyframeProps | Vreo</title><meta name="description" content="Documentation for Vreo"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><link rel="stylesheet" href="../assets/custom.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">Vreo</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/Player.html">Player</a></li><li><a href="" aria-current="page">CustomVreoKeyframeProps</a></li></ul><h1>Interface CustomVreoKeyframeProps</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">CustomVreoKeyframeProps</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#five">five</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Five</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#subscribe">subscribe</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Pick</span><span class="tsd-signature-symbol"><</span><br/> <span class="tsd-signature-type">Subscribe</span><span class="tsd-signature-symbol"><</span><br/> <span class="tsd-signature-symbol">{</span> <span class="tsd-signature-symbol">[</span><span class="tsd-kind-index-signature">key</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">data</span><span class="tsd-signature-symbol">:</span> <a href="Player.VreoKeyframe.html" class="tsd-signature-type tsd-kind-interface">VreoKeyframe</a><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">currentTime</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">any</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-type">"on"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"once"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"off"</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/realsee-developer/vreo/blob/3f320df245d675ce6791288bcbaeb220a84de210/resources/Player/typings.ts#L54">resources/Player/typings.ts:54</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#five" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>five</span></a>
|
|
2
|
+
<a href="#subscribe" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>subscribe</span></a>
|
|
3
|
+
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="five"><span>five</span><a href="#five" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">five</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Five</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/realsee-developer/vreo/blob/3f320df245d675ce6791288bcbaeb220a84de210/resources/Player/typings.ts#L56">resources/Player/typings.ts:56</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="subscribe"><span>subscribe</span><a href="#subscribe" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">subscribe</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Pick</span><span class="tsd-signature-symbol"><</span><br/> <span class="tsd-signature-type">Subscribe</span><span class="tsd-signature-symbol"><</span><br/> <span class="tsd-signature-symbol">{</span> <span class="tsd-signature-symbol">[</span><span class="tsd-kind-index-signature">key</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">data</span><span class="tsd-signature-symbol">:</span> <a href="Player.VreoKeyframe.html" class="tsd-signature-type tsd-kind-interface">VreoKeyframe</a><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">currentTime</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">any</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-type">"on"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"once"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"off"</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/realsee-developer/vreo/blob/3f320df245d675ce6791288bcbaeb220a84de210/resources/Player/typings.ts#L55">resources/Player/typings.ts:55</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#five"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>five</span></a><a href="#subscribe"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>subscribe</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">Vreo</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|