OpenAI описывает семейство моделей Sora как использующее процессы латентной видеодиффузии с денойзерами на базе трансформеров и мультимодальным кондиционированием для формирования временно согласованных кадров и синхронизированного аудио. Sora 2 фокусируется на улучшении физичности движения (соблюдение импульса, плавучести), более длительных согласованных планах и явной синхронизации между сгенерированными визуальными элементами и сгенерированной речью/звуковыми эффектами. Публичные материалы подчёркивают безопасность на уровне модели и механизмы модерации контента (жёсткие блокировки для определённого запрещённого контента, повышенные пороги для несовершеннолетних и процессы согласия при использовании внешности).
| Model Name | Tags | Orientation | Resolution | Price |
|---|---|---|---|---|
| sora-2 | videos | Portrait | 720x1280 | $0.08 / sec |
| sora-2 | videos | Landscape | 1280x720 | $0.08 / sec |
| sora-2-all | - | Universal / All | - | $0.08000 |
# Create a video with sora-2
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
-H "Authorization: Bearer $COMETAPI_KEY" \
-F "model=sora-2" \
-F "prompt=A calico cat playing a piano on stage")
echo "Response: $response"
# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '
' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"
# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
-H "Authorization: Bearer $COMETAPI_KEY")
# Parse progress from "progress": "0%" format
progress=$(echo "$status_response" | grep -o '"progress":"[^"]*"' | head -1 | sed 's/"progress":"//;s/"$//')
# Parse status from the outer level
status=$(echo "$status_response" | grep -o '"status":"[^"]*"' | head -1 | sed 's/"status":"//;s/"$//')
echo "Progress: $progress, Status: $status"
if [ "$progress" = "100%" ]; then
echo "Video generation completed!"
break
fi
if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ]; then
echo "Video generation failed!"
echo "$status_response"
exit 1
fi
sleep 10
done
# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
-H "Authorization: Bearer $COMETAPI_KEY" \
-o "./output/$video_id.mp4"
if [ -f "./output/$video_id.mp4" ]; then
echo "Video saved to ./output/$video_id.mp4"
ls -la "./output/$video_id.mp4"
else
echo "Failed to download video"
exit 1
fi