「もっと長く」ボタンを作るときに決めないといけない五つのこと
動画生成のフロントを作っていると、必ず出てくる要望がある。「この動画をもう少し
長くしたい」。
一見すると、既存の生成リクエストに秒数を足して投げ直すだけに見える。実際にはそうで
はなくて、このボタン一つの裏に独立した意思決定が五つある。全部決めないと、
UI が嘘をつくか、請求が想定外になるかのどちらかになる。
Wan 3.0 を例にするが、形は他の従量課金の生成 API でもだいたい同じだ。
1. 「延長」は再生成なのか、継続なのか
まずここを決めないと何も進まない。
- 再生成:同じプロンプトで、尺だけ長くしてもう一度回す。前の映像とは別物になる。
- 継続:既存のクリップを入力として渡し、その続き(あるいは前)を生成させる。
Wan 3.0 には後者のモードがある。前方向・後方向・両方向に伸ばせる。つまり「継続」は
選択肢として実在する。ただし継続を選んだ瞬間に、以下の四つが全部効いてくる。
UI 的には、この二つを同じボタンにまとめてはいけない。ユーザーが期待しているのは
たいてい「継続」で、実装が楽なのは「再生成」だからだ。黙って後者をやると、
「同じ動画が長くなる」と思っていた人に別の動画が返る。
2. 上限は「出力の尺」ではなく「入力+出力の合計」
ここが一番間違えやすい。
input_video_seconds + output_seconds <= 30
入力に動画を渡すと、その入力の尺も 30 秒の上限を食う。超えた場合は切り詰めでは
なく、リクエストごと拒否される。
なので「あと何秒伸ばせますか?」の答えは固定値ではなく引き算になる。
| アップロードするクリップ | 伸ばせる最大 | 完成尺 |
|---|---|---|
| 3 秒 | 27 秒 | 30 秒 |
| 10 秒 | 20 秒 | 30 秒 |
| 20 秒 | 10 秒 | 30 秒 |
| 28 秒 | 2 秒 | 30 秒 |
UI にスライダーを出すなら、最大値は入力尺に応じて動的に変える必要がある。
固定で 30 を出すと、ユーザーが選べる値の半分が必ず失敗する。
3. 入力の秒数も課金される
二つめの引き算。入力動画の秒数は、出力と同じレートで課金される。
参照画像は 10 枚まで無料なのに、参照動画は自分の長さぶん請求される。
billed_seconds = input_video_seconds + output_seconds
この二つの式を並べると、直感に反する結論が出る。
一回の延長リクエストは、どう使ってもだいたい 30 秒ぶん課金される。
変わるのは「そのうち何秒が新しい映像か」だけ。
- 20 秒を入れる → 30 秒ぶん払って、新しい映像は 10 秒。
- 3 秒を入れる → 30 秒ぶん払って、新しい映像は 27 秒。
同じ請求額で、得られる新規映像は 9 倍違う。
したがって実装としての正解は明確で、送る前にクリップの末尾だけを切り出す。
モデルが動きと光と被写体を拾うのに必要なのは末尾の 2〜3 秒で、その前の 20 秒は
課金されて上限を食うだけの存在になる。
これは UI に出したほうがいい。「末尾 3 秒だけを使って延長します(推奨)」という
チェックを既定で入れておくと、ユーザーは何も考えずに正しい側に落ちる。
4. 音は繋がらない
音声は画と同じパスで生成される。つまりパスが変われば音も変わる。
- 元のクリップと延長ぶんで、音楽が繋がらない。
- ステムは返ってこないので、音だけ差し替えることもできない。
なので「延長」の結果は、映像は繋がっているように見えても音は継ぎ目がある、という
状態になりやすい。ここは UI で先に言っておく類の制約だ。後から気づかれると
「壊れている」と受け取られる。
実務的な回避策は一つだけで、編集側で連続した音を下に敷く。プロダクトとして
そこまで面倒を見るなら、延長を選んだ時点で「音声なしで書き出す」オプションを
出すのが親切になる——ただし音を切っても料金は下がらない(切るべき二回目の
パスが存在しないため)ことも同時に書いておく必要がある。
5. 45 秒を要求されたときの答えを先に決めておく
上限は 30 秒なので、45 秒は一回の呼び出しでは出ない。ここで UI が取れる態度は三つ。
- できないと言う。 一番正直で、一番早い。
-
二回に分けて、繋ぎ目をユーザーに選ばせる。 カットを置く位置を生成前に決めて
もらう。動きが解決した瞬間(カメラ移動の終わり)を推奨として提示する。 -
黙って二回投げて繋げる。 やめたほうがいい。繋ぎ目の品質を保証できないうえに、
課金が二倍になったことがユーザーから見えない。
2 を選ぶ場合、見積もり表示は「2 リクエスト・合計 N 課金秒」と分解して出す。
従量課金のプロダクトで一番不信を買うのは、一回の操作が裏で何回課金されたか
分からないことなので、ここは冗長なくらい明示していい。
まとめ
「もっと長く」は機能ではなく、五つの意思決定の束になっている。
- 継続なのか再生成なのか
- 上限は入力+出力の合計
- 入力秒数も課金される(=末尾だけ送る)
- 音は繋がらないしステムもない
- 上限超えの要求にどう答えるか
上限や課金の根拠になっている値は、出典と確認日つきで
Wan 3.0 の仕様表にまとめてある。
ブラウザから実際に一度投げて挙動を見たい場合は
wan-3.run から一本目を無料で試せる。
wan-3.run は Wan 3.0 の上に作られた独立した第三者インターフェースであり、
Alibaba Group および Alibaba Cloud とは提携関係にありません。