CREATE YOUR WORLD
Recording

VideoRecording

4min
당신은 worldvideorecorder api의 비디오 관련 기능을 사용하여 월드 내에서 비디오를 저장하거나 공유할 수 있으며, 비디오를 사용하여 피드를 생성할 수 있습니다 비디오 녹화 및 저장/공유/피드 게시 기능을 사용하려면 다음과 같이 import 문을 작성해야 합니다 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 내에서 내 비디오 기능의 save/share/feed 게시물 기능을 호출하는 예입니다 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 video ui public startrecordingbutton button; public stoprecordingbutton button; public savevideobutton button; public sharevideobutton button; public createfeedbutton button; public getthumbnailbutton button; public thumbnailimage rawimage; // recorder camera public recordercamera camera; // target texture public targettexture rendertexture; // videoplayer object 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(); } } 스크립트를 작성한 후, 캔버스에 필요한 버튼과 원본 이미지를 생성합니다 그 후, 검사기에서 각 구성 요소를 할당합니다 카메라의 경우, 일반 카메라 컴포넌트를 사용할 수 있습니다 타겟 텍스처의 경우, 생성 > 렌더 텍스처로 생성해 주세요 👍 팁 스크린샷과 동일한 렌더 텍스처를 사용하면 올바르게 렌더링되지 않을 수 있으므로, 녹화를 위해 새로운 렌더 텍스처를 생성하고 사용하세요 qr 모바일 빌드를 통해 비디오 녹화 기능을 테스트할 수 있습니다