VideoRecording
您可以使用 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();
}
}编写脚本后,在画布上创建必要的按钮和原始图像。
之后,在检查器中分配每个组件。
- 对于相机,您可以使用普通的相机组件。
- 对于目标纹理,创建 > 请将其创建为渲染纹理。

👍 提示
- 如果您使用与屏幕截图相同的渲染纹理,可能无法正确渲染,因此请创建一个新的渲染纹理专门用于录制并使用它。
您可以通过运行二维码移动构建来测试视频录制功能。
