创造你的世界
记录
VideoRecording
4 分
您可以使用 worldvideorecorder api 中与视频相关的功能在世界中保存或分享视频,并使用视频创建动态。 为了使用视频录制和保存/分享/动态发布功能,您必须创建如下的导入语句。 import { worldvideorecorder } from 'zepeto world'; worldvideorecorder api 提供以下与视频相关的功能。 api 描述 worldvideorecorder startrecording(camera unityengine camera, resolutions videoresolutions, durationsecond number)\ boolean 开始录制视频。您可以设置录制相机、视频分辨率和录制时间作为参数。返回结果指示录制开始是否成功。 \ enum videoresolutions { w1280xh720 = 0, w720xh1280 = 1, w1920xh1080 = 2, w1080xh1920 = 3 } \ durationsecond 最大值为60,因此如果可能,请输入小于60的值。 worldvideorecorder stoprecording() 停止正在进行的视频录制。 worldvideorecorder isrecording()\ boolean 返回是否继续录制视频。 worldvideorecorder savetocameraroll(callback system action$1) 将视频保存到照片库。 worldvideorecorder share(callback system action$1) 与外部应用共享视频。 worldvideorecorder createfeed(contents string, $callback system action$1) 将视频上传到动态。第一个参数,contents,允许您指定帖子内容。 worldvideorecorder addvideoplayercomponent(playerobject unityengine gameobject, rendertexture unityengine rendertexture)\ unityengine video videoplayer 将视频播放器组件添加到您希望播放视频的gameobject,并连接录制的视频文件。这将返回添加的视频播放器,并允许您根据参数指定宽度、高度或rendertexture以播放视频。 worldvideorecorder getthumbnail()\ unityengine texture2d; 返回录制视频的缩略图。 接下来是一个示例,展示如何调用world video recorder中保存/分享/发布我视频功能的函数。 在unity编辑器环境中无法检查,但在通过应用程序播放时可以检查。 保存为文件时,分辨率记录为指定值,但上传到zepeto feed时,分辨率可能会改变。 如果您输入的durationsecond值大于60,录制将无法正常工作。 worldvideorecorder savetocameraroll(result => {console log(`${result}`)}); worldvideorecorder share(result => {console log(`${result}`)}); worldvideorecorder createfeed("\[contents]", result => {console log(`${result}`)}); 以下是一个完整的示例代码,使用rendertexture在worldvideorecorder中调用我的视频录制功能。 import { camera, gameobject, rendertexture } from 'unityengine'; import { button, rawimage } from 'unityengine ui'; import { zepetoscriptbehaviour } from 'zepeto script'; import { videoresolutions, worldvideorecorder } from 'zepeto world'; export default class worldvideorecorderexample extends zepetoscriptbehaviour { // worldvideorecorder 视频 ui public startrecordingbutton button; public stoprecordingbutton button; public savevideobutton button; public sharevideobutton button; public createfeedbutton button; public getthumbnailbutton button; public thumbnailimage rawimage; // 录制器相机 public recordercamera camera; // 目标纹理 public targettexture rendertexture; // 视频播放器对象 private videoplayerobject gameobject; awake() { this videoplayerobject = new gameobject(); } start() { this startrecordingbutton onclick addlistener(() => { if (false == worldvideorecorder startrecording(this recordercamera, videoresolutions w1280xh720, 15)) { return; } this startcoroutine(this checkrecording()); }); this stoprecordingbutton onclick addlistener(() => { if (false == worldvideorecorder isrecording()) { return; } worldvideorecorder stoprecording(); }); this savevideobutton onclick addlistener(() => { if (false == worldvideorecorder isrecording()) { worldvideorecorder savetocameraroll(result => { console log(`${result}`) }); } }); this sharevideobutton onclick addlistener(() => { if (false == worldvideorecorder isrecording()) { worldvideorecorder share(result => { console log(`${result}`) }); } }); this createfeedbutton onclick addlistener(() => { if (false == worldvideorecorder isrecording()) { worldvideorecorder createfeed("\[contents]", result => { console log(`${result}`) }); } }); this getthumbnailbutton onclick addlistener(() => { if (false == worldvideorecorder isrecording()) { this thumbnailimage texture = worldvideorecorder getthumbnail(); } }); } checkrecording() { while (worldvideorecorder isrecording()) { yield null; } let videoplayer = worldvideorecorder addvideoplayercomponent(this videoplayerobject, this targettexture); if (videoplayer == null) { return; } videoplayer play(); } } 编写脚本后,在画布上创建必要的按钮和原始图像。 之后,在检查器中分配每个组件。 对于相机,您可以使用普通的相机组件。 对于目标纹理,创建 > 请将其创建为渲染纹理。 👍 提示 如果您使用与屏幕截图相同的渲染纹理,可能无法正确渲染,因此请创建一个新的渲染纹理专门用于录制并使用它。 您可以通过运行二维码移动构建来测试视频录制功能。