
Sora APIは2025年末にOpenAIが提供を開始した動画生成APIだ。プロンプトから最大60秒の高品質映像を生成できる。この記事ではSora APIをPythonとTypeScriptから呼び出す実装方法と、実務での活用ポイントを解説する。
Sora APIの基本仕様(2026年3月時点)
| 項目 | 仕様 |
|---|---|
| 最大動画長 | 60秒 |
| 解像度 | 480p / 720p / 1080p |
| アスペクト比 | 16:9 / 9:16 / 1:1 |
| 生成時間 | 10秒動画で約2〜5分 |
| 価格 | 約$0.03〜0.06/秒(解像度による) |
| 入力 | テキストプロンプト / 参照画像(Image-to-Video) |
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。
あなたの「作りたい」を叶えるAdobeの動画ツール
Python実装:シンプルなテキストtoビデオ
from openai import OpenAI
import time
import requests
client = OpenAI(api_key="your-api-key")
def generate_video(prompt: str, duration: int = 10, resolution: str = "720p") -> str:
"""プロンプトから動画を生成してファイルパスを返す"""
# 1. 動画生成ジョブを開始
response = client.videos.generate(
model="sora",
prompt=prompt,
size=f"1280x720" if resolution == "720p" else "1920x1080",
duration=duration,
quality="standard"
)
job_id = response.id
print(f"生成開始: job_id={job_id}")
# 2. 完了をポーリング
while True:
status = client.videos.retrieve(job_id)
if status.status == "completed":
print(f"生成完了: {status.result_url}")
break
elif status.status == "failed":
raise Exception(f"生成失敗: {status.error}")
print(f"生成中... ({status.status})")
time.sleep(15)
# 3. ダウンロード
output_path = f"output_{job_id[:8]}.mp4"
video_data = requests.get(status.result_url).content
with open(output_path, "wb") as f:
f.write(video_data)
return output_path
# 使用例
video_path = generate_video(
prompt="Serene Japanese garden with koi pond, autumn leaves falling, golden hour lighting, cinematic 4K",
duration=10,
resolution="720p"
)
print(f"保存先: {video_path}")
TypeScript実装:Next.js APIルート
// app/api/generate-video/route.ts
import OpenAI from "openai";
import { NextRequest, NextResponse } from "next/server";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
export async function POST(req: NextRequest) {
const { prompt, duration = 10 } = await req.json();
// ジョブ開始
const job = await openai.videos.generate({
model: "sora",
prompt,
size: "1280x720",
duration,
});
// ステータスをクライアントに返す(フロントエンドでポーリング)
return NextResponse.json({ jobId: job.id, status: "started" });
}
// app/api/video-status/[jobId]/route.ts
export async function GET(
req: NextRequest,
{ params }: { params: { jobId: string } }
) {
const status = await openai.videos.retrieve(params.jobId);
return NextResponse.json({
status: status.status,
url: status.result_url ?? null,
error: status.error ?? null,
});
}
Image-to-Video:AfterEffectsとの連携
Sora APIの強力な使い方は「静止画を動かす」Image-to-Videoモードだ。AfterEffectsで作ったコンポジット画像をSoraに渡して動画化するワークフローを紹介する。
import base64
from pathlib import Path
def image_to_video(image_path: str, motion_prompt: str, duration: int = 5) -> str:
"""静止画から動画を生成する"""
# 画像をbase64エンコード
image_data = Path(image_path).read_bytes()
image_b64 = base64.b64encode(image_data).decode()
response = client.videos.generate(
model="sora",
prompt=motion_prompt,
image=f"data:image/jpeg;base64,{image_b64}",
duration=duration,
size="1920x1080",
)
# ... ポーリング処理(前述と同様)
return output_path
# AfterEffectsでレンダリングした静止画を動かす例
video = image_to_video(
image_path="ae_composite_v3.jpg",
motion_prompt="slow zoom out, particles floating, soft ambient light",
duration=8
)
コスト管理:無駄なAPI呼び出しを防ぐ
Sora APIは1回の呼び出しで数百円かかる場合もある。以下の対策でコストを管理する。
- プロンプトをまず短時間でテスト:本番の前に5秒・480pで生成して構図を確認
- キャッシュ機構の実装:同じプロンプトの再生成を防ぐためDBにジョブIDと結果URLを保存
- 使用量の上限設定:OpenAIダッシュボードで月額上限を設定する
# シンプルなキャッシュ実装例(SQLite)
import sqlite3
import hashlib
def get_cached_video(prompt: str, duration: int) -> str | None:
cache_key = hashlib.md5(f"{prompt}-{duration}".encode()).hexdigest()
conn = sqlite3.connect("video_cache.db")
row = conn.execute(
"SELECT result_url FROM cache WHERE cache_key = ?", (cache_key,)
).fetchone()
conn.close()
return row[0] if row else None
実務での使い分け:SoraとRunwayの選択基準
- Soraを選ぶ場面:風景・自然・抽象的なB-roll。クオリティ最優先
- Runwayを選ぶ場面:Image-to-Video(既存画像を動かす)。速度重視
- コスト比較:10秒動画でSora約$0.50〜、Runway約$0.10〜
まとめ
Sora APIは「高品質なB-roll素材を必要なときに生成する」ツールとして非常に実用的だ。PythonとTypeScriptどちらからも呼び出しやすく、既存のワークフローへの組み込みもシンプルだ。まずはテスト用に低解像度・短尺から試してみてほしい。
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。



