---
title: VideoRecording
slug: world-sdk-guide-ch/videorecording
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

您可以使用 WorldVideoRecorder API 中与视频相关的功能在世界中保存或分享视频，并使用视频创建动态。

为了使用视频录制和保存/分享/动态发布功能，您必须创建如下的导入语句。

```typescript
import { WorldVideoRecorder } from 'ZEPETO.World';
```

WorldVideoRecorder API 提供以下与视频相关的功能。

| **API**                                                                                                                                                    | **描述**                                                                                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| WorldVideoRecorder.StartRecording(camera: UnityEngine.Camera, resolutions: VideoResolutions, durationSecond: number)\:boolean                              | 开始录制视频。您可以设置录制相机、视频分辨率和录制时间作为参数。返回结果指示录制开始是否成功。<br /><br />- enum VideoResolutions \{ W1280xH720 = 0, W720xH1280 = 1, W1920xH1080 = 2, W1080xH1920 = 3 }<br />- 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中保存/分享/发布我视频功能的函数。

:::hint{type="danger"}
- 在Unity编辑器环境中无法检查，但在通过应用程序播放时可以检查。
- 保存为文件时，分辨率记录为指定值，但上传到ZEPETO Feed时，分辨率可能会改变。
- 如果您输入的durationSecond值大于60，录制将无法正常工作。
:::

```typescript
WorldVideoRecorder.SaveToCameraRoll(result => {console.log(`${result}`)});   

WorldVideoRecorder.Share(result => {console.log(`${result}`)});

WorldVideoRecorder.CreateFeed("[contents]", result => {console.log(`${result}`)});
```



以下是一个完整的示例代码，使用RenderTexture在WorldVideoRecorder中调用我的视频录制功能。

```typescript
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();
    }
}
```

编写脚本后，在画布上创建必要的按钮和原始图像。

之后，在检查器中分配每个组件。

- 对于相机，您可以使用普通的相机组件。
- 对于目标纹理，创建 > 请将其创建为渲染纹理。

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-9Q1Nl9SoGPJfMgEClrJkV-20240904-102426.png" size="58" width="337" height="441" position="center" showCaption="false"}

:::hint{type="success"}
**👍 提示**

- 如果您使用与屏幕截图相同的渲染纹理，可能无法正确渲染，因此请创建一个新的渲染纹理专门用于录制并使用它。
:::



您可以通过运行二维码移动构建来测试视频录制功能。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-_RN5L3ExW9fSNhlLPLc30-20240904-102426.png)

