Método 1: Extrair Personagem de URL de Vídeo
Este é o método mais direto – você fornece uma URL de vídeo e especifica em qual intervalo de tempo o personagem aparece.
Estrutura Básica da Requisição
import requests
url = "https://api.openai.com/v1/sora/characters"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"model": "sora-2-character",
"url": "https://cdn.openai.com/sora/videos/example.mp4",
"timestamps": "5,8" # Extrai o personagem que aparece entre 5-8 segundos
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Parâmetros Detalhados
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model |
string | ✅ | Deve ser "sora-2-character" |
url |
string | ✅ | URL do vídeo de origem |
timestamps |
string | ✅ | Intervalo de tempo no formato "inicio,fim" |
Entendendo o Parâmetro timestamps
O timestamps é crucial para a extração precisa do personagem. Veja como funciona:
// Formato: "inicio,fim" (em segundos)
"timestamps": "5,8" // Extrai o personagem que aparece entre 5-8 segundos
"timestamps": "0,3" // Extrai dos primeiros 3 segundos
"timestamps": "10,15" // Extrai do intervalo 10-15 segundos
Dicas para escolher o timestamps ideal:
- Escolha um segmento onde o personagem esteja claramente visível (não cortado, não borrado)
- 3-5 segundos é geralmente suficiente para capturar as características
- Evite cenas com múltiplos personagens no quadro
- Prefira cenas com boa iluminação e ângulo frontal ou de perfil
Exemplo Completo com Tratamento de Resposta
import requests
import json
def criar_personagem_de_url(video_url, inicio, fim, api_key):
"""
Cria um personagem a partir de uma URL de vídeo
Args:
video_url: URL do vídeo fonte
inicio: Segundo inicial (int ou float)
fim: Segundo final (int ou float)
api_key: Sua chave de API OpenAI
"""
url = "https://api.openai.com/v1/sora/characters"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
data = {
"model": "sora-2-character",
"url": video_url,
"timestamps": f"{inicio},{fim}"
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
resultado = response.json()
character_id = resultado.get("character_id")
print(f"✅ Personagem criado com sucesso!")
print(f"🎭 Character ID: {character_id}")
print(f"📝 Resposta completa: {json.dumps(resultado, indent=2)}")
return character_id
except requests.exceptions.RequestException as e:
print(f"❌ Erro ao criar personagem: {e}")
return None
# Uso
character_id = criar_personagem_de_url(
video_url="https://cdn.openai.com/sora/videos/my-character.mp4",
inicio=5,
fim=8,
api_key="sk-proj-..."
)
Exemplo de Resposta da API
{
"id": "char_abc123xyz456",
"object": "character",
"created": 1735689600,
"model": "sora-2-character",
"character_id": "@char_abc123xyz456",
"source": {
"type": "url",
"url": "https://cdn.openai.com/sora/videos/example.mp4",
"timestamps": "5,8"
},
"status": "completed"
}
O character_id retornado (por exemplo, @char_abc123xyz456) é o que você vai usar em futuras gerações de vídeo para manter a consistência do personagem.
Método 2: Reutilizar Personagem de Task ID
Se você já gerou um vídeo anteriormente usando a Sora 2 Video API e quer extrair um personagem desse vídeo, pode usar o ID da tarefa (task ID) diretamente, sem precisar da URL.
Por Que Usar Este Método?
✅ Mais conveniente: Você já tem o task_id da geração anterior
✅ Mais rápido: Não precisa fazer upload/hospedar o vídeo
✅ Workflow integrado: Perfeito para pipelines automatizados
Estrutura Básica da Requisição
import requests
url = "https://api.openai.com/v1/sora/characters"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"model": "sora-2-character",
"from_task": "video_f751ab91c3764925a297e4c279a260b3", # ID da tarefa anterior
"timestamps": "5,8"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Parâmetros Detalhados
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model |
string | ✅ | Deve ser "sora-2-character" |
from_task |
string | ✅ | ID da tarefa de vídeo anterior |
timestamps |
string | ✅ | Intervalo de tempo no formato "inicio,fim" |
Workflow Completo: Gerar Vídeo → Extrair Personagem
Veja como isso funciona na prática, do início ao fim:
import requests
import time
import json
class SoraCharacterWorkflow:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.openai.com/v1/sora"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def gerar_video_inicial(self, prompt):
"""Passo 1: Gerar o vídeo inicial"""
print("🎬 Gerando vídeo inicial...")
data = {
"model": "sora-2.0-standard",
"prompt": prompt,
"duration": 10
}
response = requests.post(
f"{self.base_url}/videos/generations",
headers=self.headers,
json=data
)
response.raise_for_status()
task_id = response.json()["id"]
print(f"📋 Task ID: {task_id}")
return task_id
def aguardar_conclusao(self, task_id):
"""Passo 2: Aguardar a conclusão do vídeo"""
print("⏳ Aguardando conclusão do vídeo...")
while True:
response = requests.get(
f"{self.base_url}/videos/generations/{task_id}",
headers=self.headers
)
response.raise_for_status()
status_data = response.json()
status = status_data.get("status")
if status == "completed":
print("✅ Vídeo concluído!")
return status_data
elif status == "failed":
raise Exception("❌ Geração de vídeo falhou")
print(f" Status: {status}...")
time.sleep(5)
def extrair_personagem(self, task_id, inicio, fim):
"""Passo 3: Extrair personagem do vídeo gerado"""
print(f"🎭 Extraindo personagem do intervalo {inicio}-{fim}s...")
data = {
"model": "sora-2-character",
"from_task": task_id,
"timestamps": f"{inicio},{fim}"
}
response = requests.post(
f"{self.base_url}/characters",
headers=self.headers,
json=data
)
response.raise_for_status()
char_data = response.json()
character_id = char_data.get("character_id")
print(f"✅ Personagem criado: {character_id}")
return character_id
def gerar_video_com_personagem(self, prompt, character_id):
"""Passo 4: Gerar novo vídeo usando o personagem"""
print(f"🎥 Gerando novo vídeo com personagem {character_id}...")
# Incorpora o character_id no prompt
prompt_completo = f"{character_id} {prompt}"
data = {
"model": "sora-2.0-standard",
"prompt": prompt_completo,
"duration": 10
}
response = requests.post(
f"{self.base_url}/videos/generations",
headers=self.headers,
json=data
)
response.raise_for_status()
return response.json()["id"]
# ===== EXEMPLO DE USO COMPLETO =====
workflow = SoraCharacterWorkflow(api_key="sk-proj-...")
# Passo 1: Gerar vídeo inicial com o personagem
task_id_inicial = workflow.gerar_video_inicial(
prompt="Uma jovem mulher com cabelo ruivo curto, usando jaqueta de couro preta, caminhando em uma cidade cyberpunk à noite"
)
# Passo 2: Aguardar conclusão
workflow.aguardar_conclusao(task_id_inicial)
# Passo 3: Extrair personagem (aparece entre 3-7 segundos)
character_id = workflow.extrair_personagem(
task_id=task_id_inicial,
inicio=3,
fim=7
)
# Passo 4: Gerar novos vídeos com o mesmo personagem
task_id_cafe = workflow.gerar_video_com_personagem(
prompt="sentada em um café parisiense, bebendo cappuccino",
character_id=character_id
)
task_id_praia = workflow.gerar_video_com_personagem(
prompt="correndo na praia ao pôr do sol",
character_id=character_id
)
print(f"""
🎉 Workflow completo!
- Personagem criado: {character_id}
- Vídeo café: {task_id_cafe}
- Vídeo praia: {task_id_praia}
""")
Vantagens do Método from_task
| Vantagem | Descrição |
|---|---|
| Sem upload | Não precisa hospedar ou fazer upload do vídeo |
| Automação | Ideal para pipelines automatizados |
| Rastreabilidade | Mantém vínculo direto com a geração original |
| Velocidade | Processo mais rápido sem transferência de arquivos |
Comparação: URL vs Task ID

Quando Usar Cada Método
| Cenário | Método Recomendado | Motivo |
|---|---|---|
| Vídeos existentes/externos | URL | Você já tem o vídeo hospedado |
| Pipeline automatizado | Task ID | Integração mais fluida |
| Vídeos gerados pela Sora | Task ID | Mais rápido e conveniente |
| Teste com vários vídeos | URL | Flexibilidade para experimentar |
| Produção em escala | Task ID | Otimiza recursos e tempo |
Dicas Avançadas para timestamps
O parâmetro timestamps pode parecer simples, mas usá-lo corretamente faz toda a diferença na qualidade do personagem extraído.
Regras de Ouro para timestamps
# ✅ BOM: Personagem claramente visível
"timestamps": "5,8" # 3 segundos de cena limpa
# ❌ RUIM: Intervalo muito curto
"timestamps": "5,5.5" # Apenas 0.5 segundos
# ❌ RUIM: Intervalo muito longo
"timestamps": "0,30" # 30 segundos - personagem pode mudar
# ✅ ÓTIMO: Close-up frontal
"timestamps": "12,15" # Cena de diálogo frontal
# ❌ RUIM: Múltiplos personagens
"timestamps": "20,25" # Cena de grupo - ambíguo
Estratégia para Escolher o Melhor Intervalo
- Assista ao vídeo primeiro: Identifique onde o personagem está mais claro
- Prefira close-ups: Ângulos frontais ou de perfil capturam melhor os detalhes
- Evite movimento rápido: Cenas estáticas ou com movimento lento são ideais
- Boa iluminação: Evite cenas muito escuras ou superexpostas
- Personagem sozinho: Se possível, escolha um momento onde apenas ele aparece
Exemplo Prático de Análise
def analisar_video_para_timestamps(video_path):
"""
Função helper para ajudar a escolher o melhor intervalo
(simulação - na prática você faria isso manualmente ou com análise de vídeo)
"""
recomendacoes = {
"cena_dialogo_frontal": "12,15", # Personagem falando de frente
"caminhada_perfil": "5,8", # Caminhando de perfil
"close_up_rosto": "20,23", # Close no rosto
"acao_movimento": "30,33" # Em movimento (menos ideal)
}
print("💡 Recomendações de timestamps:")
for cena, intervalo in recomendacoes.items():
print(f" {cena}: {intervalo}")
return recomendacoes
# Uso
analisar_video_para_timestamps("meu_video.mp4")
Usando o Character ID em Gerações Futuras
Depois de criar o personagem, você obtém um character_id (por exemplo, @char_abc123xyz456). Veja como usá-lo:
Sintaxe Básica
# Incorpore o character_id diretamente no prompt
prompt_com_personagem = f"{character_id} {sua_descricao_de_cena}"
# Exemplo
character_id = "@char_abc123xyz456"
prompt = f"{character_id} caminhando pela Times Square à noite, luzes de neon refletindo em seu rosto"
Exemplo Completo de Reutilização
def gerar_serie_videos_com_personagem(character_id, cenas, api_key):
"""
Gera uma série de vídeos usando o mesmo personagem
Args:
character_id: ID do personagem criado
cenas: Lista de descrições de cena
api_key: Sua chave de API
"""
url = "https://api.openai.com/v1/sora/videos/generations"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
task_ids = []
for i, cena in enumerate(cenas, 1):
prompt_completo = f"{character_id} {cena}"
data = {
"model": "sora-2.0-standard",
"prompt": prompt_completo,
"duration": 10
}
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
task_id = response.json()["id"]
task_ids.append(task_id)
print(f"✅ Cena {i} iniciada: {task_id}")
print(f" Prompt: {prompt_completo[:80]}...")
return task_ids
# Uso: Criar uma série de vídeos com o mesmo personagem
character_id = "@char_abc123xyz456"
cenas = [
"acordando em um quarto moderno, luz do sol entrando pela janela",
"preparando café na cozinha, sorrindo",
"saindo de casa, fechando a porta",
"andando pela calçada da cidade, cumprimentando vizinhos",
"entrando em um café local, pedindo bebida"
]
task_ids = gerar_serie_videos_com_personagem(
character_id=character_id,
cenas=cenas,
api_key="sk-proj-..."
)
print(f"\n🎬 {len(task_ids)} vídeos em geração com personagem consistente!")
Resultado: Consistência de Personagem
Com o character_id, o mesmo personagem aparecerá em todos os vídeos com:
- ✅ Mesma aparência facial
- ✅ Mesma cor e estilo de cabelo
- ✅ Mesmas características físicas
- ✅ Mesma vestimenta base (pode variar conforme o prompt)
Casos de Uso Práticos
1. Série de Conteúdo de Marca
# Crie um mascote de marca e use em múltiplas campanhas
character_id = "@char_mascote_marca"
campanhas = {
"lancamento_produto": f"{character_id} apresentando entusiasmadamente o novo produto em um showroom moderno",
"tutorial": f"{character_id} demonstrando como usar o produto passo a passo",
"depoimento": f"{character_id} compartilhando experiência positiva com o produto"
}
2. Conteúdo Educacional em Série
# Professor virtual consistente
character_id = "@char_professor_virtual"
aulas = [
f"{character_id} explicando conceitos básicos de programação em uma sala de aula moderna",
f"{character_id} demonstrando código Python em um quadro branco digital",
f"{character_id} respondendo perguntas frequentes dos alunos"
]
3. Storytelling Narrativo
# Personagem principal de uma história
character_id = "@char_protagonista"
capitulos = [
f"{character_id} descobrindo um mapa misterioso em um sótão empoeirado",
f"{character_id} viajando para uma floresta encantada ao amanhecer",
f"{character_id} encontrando uma criatura mágica perto de um lago",
f"{character_id} retornando para casa, transformado pela jornada"
]
Solução de Problemas Comuns
Problema 1: "Character extraction failed"
Causa: Intervalo de timestamps inadequado
Solução:
# ❌ Evite:
"timestamps": "0,1" # Muito curto
# ✅ Use:
"timestamps": "5,8" # 3-5 segundos é ideal
Problema 2: Personagem inconsistente nas gerações
Causa: Prompt muito descritivo sobrescrevendo o personagem
Solução:
# ❌ Evite descrições conflitantes:
prompt = f"{character_id} um homem alto de cabelo loiro..." # Conflita com o personagem
# ✅ Descreva apenas a cena/ação:
prompt = f"{character_id} caminhando no parque ao pôr do sol"
Problema 3: "Invalid task_id"
Causa: Task ID expirou ou inválido
Solução:
# Verifique se o task_id ainda é válido
response = requests.get(
f"https://api.openai.com/v1/sora/videos/generations/{task_id}",
headers=headers
)
if response.json()["status"] != "completed":
print("❌ Task ainda não concluído ou falhou")
Conclusão
A Sora 2 Character API revoluciona a criação de conteúdo em vídeo ao resolver o problema da consistência de personagem. Com os dois métodos – URL de vídeo e Task ID – você tem flexibilidade para se adequar a diferentes workflows.
Pontos-Chave para Lembrar
✅ timestamps é crucial: Escolha intervalos de 3-5 segundos com boa visibilidade do personagem
✅ Método URL: Para vídeos existentes e fontes externas
✅ Método Task ID: Para pipelines automatizados e vídeos gerados pela Sora
✅ Reutilize o character_id: Crie séries consistentes incorporando-o nos prompts
Próximos Passos
- Experimente criar seu primeiro personagem usando um vídeo teste
- Teste diferentes intervalos de timestamps para ver qual produz melhores resultados
- Construa uma pequena série de 3-5 vídeos usando o mesmo personagem
- Automatize o processo em seu pipeline de produção
Dica Final: A APIYI oferece acesso estável e acessível à Sora 2 Character API com teste gratuito. Perfeito para experimentar esses conceitos sem compromisso inicial!
🎬 Agora é sua vez de criar personagens consistentes e dar vida às suas histórias em vídeo!
Sora 2 Character API – Dois Métodos de Criação
Método 1: Extrair Personagem de URL de Vídeo
Esta é a forma mais direta, ideal quando você já possui material de vídeo pronto.
Parâmetros da Requisição:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model |
string | ✅ | Valor fixo sora-2-character |
url |
string | ✅ | URL do vídeo acessível publicamente |
timestamps |
string | ✅ | Intervalo de tempo onde o personagem aparece, formato "segundo_inicial,segundo_final" |
Exemplo Completo de Requisição:
curl https://api.apiyi.com/sora/v1/characters \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-api-key" \
-d '{
"model": "sora-2-character",
"url": "https://your-cdn.com/video/character-source.mp4",
"timestamps": "5,8"
}'
⚠️ Pontos Importantes:
- URL do vídeo deve ser publicamente acessível: Os servidores da OpenAI precisam conseguir acessar o vídeo
- CDN configurado globalmente: Se usar OSS/CDN, certifique-se de configurar acesso global para evitar que servidores da OpenAI (geralmente no exterior) não consigam acessar
- Intervalo de timestamps:
- Diferença mínima: 1 segundo
- Diferença máxima: 3 segundos
- Exemplo:
"5,8"representa do segundo 5 ao segundo 8 do vídeo
Método 2: Reutilizar Personagem por ID da Tarefa
Se você já gerou vídeos através da API Sora 2, pode usar diretamente o ID da tarefa daquele vídeo para extrair o personagem, sem precisar fazer upload novamente.
Parâmetros da Requisição:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model |
string | ✅ | Valor fixo sora-2-character |
from_task |
string | ✅ | ID da tarefa do vídeo gerado anteriormente |
timestamps |
string | ✅ | Intervalo de tempo onde o personagem aparece |
Exemplo Completo de Requisição:
curl https://api.apiyi.com/sora/v1/characters \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-api-key" \
-d '{
"model": "sora-2-character",
"from_task": "video_f751abfd-87a9-46e2-9236-1d94743c5e3e",
"timestamps": "5,8"
}'
Vantagens deste Método:
- ✅ Não precisa fazer upload adicional de vídeo, economiza banda
- ✅ Reutiliza diretamente os recursos de vídeo já gerados
- ✅ Fluxo de trabalho mais fluido, ideal para processamento em lote
- ✅ Evita problemas de expiração ou acesso de URLs de vídeo
Dica: Utilize a API Sora 2 Character através da APIYI apiyi.com, que oferece serviços de integração estáveis e créditos gratuitos para testes.
Comparação dos Dois Métodos da API Sora 2 Character
| Dimensão | Método URL de Vídeo | Método ID da Tarefa |
|---|---|---|
| Cenário Ideal | Vídeos prontos existentes | Reutilizar vídeos gerados pelo Sora |
| Parâmetro | url |
from_task |
| Necessita Upload | Precisa de URL pública acessível | Não precisa, usa direto o ID |
| Requisitos de Rede | CDN com acesso global | Sem requisitos adicionais |
| Fluxo de Trabalho | Processamento de material independente | Integrado ao fluxo de geração |
| Caso de Uso Recomendado | Importar personagens de vídeos externos | Gerar séries de vídeos em lote |
Como Escolher?
Escolha o método de URL de Vídeo quando:
- Você tem material de vídeo pronto (como vídeos filmados, baixados de outras plataformas)
- Precisa extrair personagens de vídeos não gerados pelo Sora
Escolha o método de ID da Tarefa quando:
- Está usando a API Sora 2 para gerar vídeos em lote
- Quer extrair personagens de vídeos já gerados para usar em vídeos subsequentes da série
- Busca um fluxo de trabalho automatizado mais fluido
Sora 2 Character API timestamps 参数详解
timestamps 是 Character API 最关键的参数,它决定了从视频的哪个时间段提取角色。
timestamps 格式规则
| 规则 | 说明 | 示例 |
|---|---|---|
| 格式 | "开始秒,结束秒" |
"5,8" |
| 类型 | string(字符串) | 注意用引号包裹 |
| 最小差值 | 1 秒 | "3,4" ✅ |
| 最大差值 | 3 秒 | "5,8" ✅ |
| 超出限制 | 会报错 | "1,10" ❌ |
timestamps 设置技巧
- 选择角色清晰可见的片段: 角色应该完整出现在画面中,不要被遮挡
- 避免快速运动的片段: 选择角色相对静止或缓慢移动的时间段
- 确保光线充足: 光线良好的片段能提取更准确的角色特征
- 角色正面优先: 如果可能,选择角色面向镜头的片段
示例场景:
假设你有一个 10 秒的视频,角色在第 2-4 秒正面出镜,第 6-9 秒侧面运动:
// 推荐:选择正面清晰的片段
{
"timestamps": "2,4"
}
// 不推荐:角色侧面运动
{
"timestamps": "6,9"
}
Sora 2 Character API 完整工作流
Python 代码示例
import requests
import time
# APIYI 接口配置
API_BASE = "https://api.apiyi.com/sora/v1"
API_KEY = "sk-your-api-key"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
def create_character_from_url(video_url: str, timestamps: str) -> dict:
"""方法一:从视频 URL 创建角色"""
response = requests.post(
f"{API_BASE}/characters",
headers=headers,
json={
"model": "sora-2-character",
"url": video_url,
"timestamps": timestamps
}
)
return response.json()
def create_character_from_task(task_id: str, timestamps: str) -> dict:
"""方法二:从任务 ID 创建角色"""
response = requests.post(
f"{API_BASE}/characters",
headers=headers,
json={
"model": "sora-2-character",
"from_task": task_id,
"timestamps": timestamps
}
)
return response.json()
# 使用示例
# 方法一:从视频 URL 创建
result1 = create_character_from_url(
video_url="https://your-cdn.com/video/hero.mp4",
timestamps="5,8"
)
print(f"角色创建任务: {result1}")
# 方法二:从任务 ID 创建
result2 = create_character_from_task(
task_id="video_f751abfd-87a9-46e2-9236-1d94743c5e3e",
timestamps="2,4"
)
print(f"角色创建任务: {result2}")
查看完整的角色创建与使用流程代码
import requests
import time
API_BASE = "https://api.apiyi.com/sora/v1"
API_KEY = "sk-your-api-key"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
def create_character(video_url: str, timestamps: str) -> str:
"""创建角色并返回角色 ID"""
# 1. 发起角色创建请求
response = requests.post(
f"{API_BASE}/characters",
headers=headers,
json={
"model": "sora-2-character",
"url": video_url,
"timestamps": timestamps
}
)
task_data = response.json()
task_id = task_data.get("task_id")
# 2. 轮询等待任务完成
while True:
status_response = requests.get(
f"{API_BASE}/characters/{task_id}",
headers=headers
)
status_data = status_response.json()
if status_data.get("status") == "completed":
return status_data.get("character_id")
elif status_data.get("status") == "failed":
raise Exception(f"角色创建失败: {status_data}")
time.sleep(5) # 每 5 秒检查一次
def generate_video_with_character(prompt: str, character_id: str) -> str:
"""使用角色生成视频"""
# 在 prompt 中通过 @character_id 引用角色
full_prompt = f"@{character_id} {prompt}"
response = requests.post(
f"{API_BASE}/videos",
headers=headers,
json={
"model": "sora-2",
"prompt": full_prompt,
"duration": 8,
"resolution": "1080p"
}
)
return response.json()
# 完整流程示例
if __name__ == "__main__":
# 步骤 1: 创建角色
character_id = create_character(
video_url="https://your-cdn.com/video/hero.mp4",
timestamps="5,8"
)
print(f"角色创建成功,ID: {character_id}")
# 步骤 2: 使用角色生成系列视频
scenes = [
"walking through a futuristic city at night",
"sitting in a coffee shop, reading a book",
"running on a beach at sunset"
]
for i, scene in enumerate(scenes):
result = generate_video_with_character(scene, character_id)
print(f"视频 {i+1} 生成任务: {result}")
提示: 通过 APIYI apiyi.com 接入 Sora 2 Character API,平台提供完整的角色管理功能和技术支持。
Perguntas Frequentes
Q1: O que fazer quando a URL do vídeo não está acessível?
Certifique-se de que a URL do vídeo atenda às seguintes condições:
- Acessível publicamente: Não pode ser um endereço de rede interna ou link que exija login
- CDN com aceleração global: Se estiver usando Alibaba Cloud OSS, AWS S3, etc., é necessário ativar a aceleração global ou usar uma CDN global
- URL não expirada: Se for uma URL assinada temporariamente, garanta que o período de validade seja longo o suficiente
- Formato suportado: Recomendamos o uso do formato MP4
Q2: Como resolver erros no parâmetro timestamps?
Erros comuns e soluções:
- Intervalo de tempo maior que 3 segundos: Reduza o intervalo para 1-3 segundos, por exemplo
"5,8"→"5,7" - Intervalo de tempo menor que 1 segundo: Certifique-se de que haja pelo menos 1 segundo de diferença entre início e fim
- Erro de formato: Deve ser no formato string
"5,8", não pode ser array ou número - Excede a duração do vídeo: Garanta que o intervalo de tempo esteja dentro da duração total do vídeo
Q3: Como usar o personagem criado na geração de vídeos?
Após criar o personagem com sucesso, você receberá um character_id. Nas solicitações subsequentes de geração de vídeo, referencie esse personagem no prompt usando o formato @character_id. Por exemplo:
@char_abc123xyz caminhando em uma cidade futurista, com luzes de neon piscando
O sistema aplicará automaticamente as características desse personagem ao vídeo gerado, mantendo a aparência consistente.
Resumo
Pontos-chave da Sora 2 Character API:
- Dois métodos de criação: Extração via URL de vídeo e reutilização de ID de tarefa, adaptando-se flexivelmente a diferentes cenários
- Parâmetro timestamps: Intervalo de tempo de 1-3 segundos, escolha segmentos onde o personagem esteja claramente visível
- Reutilização de personagens: Crie uma vez, use várias vezes em diferentes vídeos, mantendo a consistência do personagem
- Configuração de CDN: Ao usar o método de URL de vídeo, garanta acessibilidade global
Depois de dominar a Character API, você poderá:
- Criar personagens virtuais reutilizáveis para IPs de marca
- Produzir conteúdo de vídeo em série com personagens consistentes
- Realizar vídeos narrativos contínuos de nível profissional
Recomendamos integrar a Sora 2 Character API através da APIYI apiyi.com – a plataforma oferece serviços estáveis e créditos gratuitos para testes, ajudando você a começar rapidamente com a funcionalidade de criação de personagens.
📚 Materiais de Referência
⚠️ Nota sobre formato de links: Todos os links externos usam o formato
Nome do Material: domain.compara facilitar a cópia, mas não são clicáveis, evitando perda de peso SEO.
-
Lançamento Oficial do OpenAI Sora 2: Introdução às funcionalidades e características do Sora 2
- Link:
openai.com/index/sora-2/ - Descrição: Informações oficiais sobre o Sora 2 e funcionalidades de personagens
- Link:
-
Central de Ajuda OpenAI – Funcionalidade Characters: Guia de criação e uso de personagens
- Link:
help.openai.com/en/articles/12435986-generating-content-with-characters - Descrição: Instruções oficiais sobre como usar a funcionalidade de personagens
- Link:
-
Documentação da API OpenAI – Video Generation: Documentação técnica da API Sora
- Link:
platform.openai.com/docs/guides/video-generation - Descrição: Especificações da interface API e descrição de parâmetros
- Link:
-
Página OpenAI Sora Characters: Apresentação do produto de funcionalidade de personagens
- Link:
openai.com/sora/characters/ - Descrição: Posicionamento do produto e cenários de uso da funcionalidade de personagens
- Link:
Autor: Equipe Técnica
Intercâmbio Técnico: Sinta-se à vontade para discutir nos comentários. Para mais materiais, visite a comunidade técnica APIYI apiyi.com
