あなたの世界を作りなさい
記録
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 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モバイルビルドを通してビデオ録画機能をテストできます。