Alibaba: HappyHorse 1.0
Alibaba HappyHorse 1.0 cria vídeos curtos com som a partir de texto, de uma imagem inicial ou de até nove imagens de referência. Os seus modos de geração produzem MP4 de 3–15 segundos a 24 fps, em 720p ou 1080p. Um perfil 1.0 de edição de vídeo, com nome próprio, revê filmagens fornecidas com referências visuais opcionais e limites próprios.
Sobre o modelo
Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.
Alibaba HappyHorse 1.0 é uma edição de criação de vídeo com perfis identificados de texto para vídeo, imagem do primeiro fotograma para vídeo e referências para vídeo. O fabricante descreve como foco criativo o movimento fisicamente convincente, a compreensão semântica e a sincronização audiovisual. O seu perfil de referências pode utilizar até nove imagens para orientar sujeitos e cenas. O recurso útil é um clipe curto com som: uma nova cena, uma animação a partir de uma imagem inicial preparada ou um plano de personagem ou produto guiado por referências.
Para uma cena em texto, defina o sujeito, o cenário, a ação e a câmara, com o som pretendido. Numa cena sobre uma mesa, mostre um pequeno veleiro em miniatura a deslocar-se num tabuleiro raso com água enquanto a câmara o acompanha à altura da mesa. A revisão pode depois verificar a forma do barco, a escala da cena, o movimento da água e a relação entre movimento e som. Uma ação focada é mais fácil de avaliar do que uma sequência densa cujo momento essencial não está claramente indicado.
Para geração a partir do primeiro fotograma, utilize uma imagem fixa cujo sujeito e composição já correspondam à abertura pretendida. Descreva o movimento que se segue e o percurso da câmara. O perfil exato de imagem da versão 1.0 do fabricante aceita texto e imagem, enquanto a sua matriz de geração o identifica como imagem do primeiro fotograma para vídeo. Prepare o recorte e os pormenores visíveis do produto ou da personagem antes de gerar o plano. Verifique se esses pormenores continuam reconhecíveis durante o movimento, em vez de avaliar apenas o primeiro fotograma.
Referências para vídeo combina as pessoas, os produtos, o estilo ou o cenário mostrados em fontes visuais numa cena descrita de novo. A página do modelo exato de referências da versão 1.0 documenta até nove imagens. Atribua-lhes papéis nas instruções e descreva como o sujeito deve agir na cena. Uma apresentação de produto pode distinguir a referência do artigo do local envolvente ou do estilo visual. A ênfase do fabricante na estabilidade é um objetivo de revisão: compare o sujeito, as marcas e a posição com as referências efetivas ao longo de todo o clipe.
A família 1.0 tem também um perfil de edição de vídeo, com nome próprio, para alterações de estilo e revisões locais ou mais amplas de filmagens existentes. Esse perfil recebe exatamente um vídeo de origem e entre zero e cinco imagens de referência, em vez da configuração de nove imagens da geração por referências. Indique o que deve mudar e o que deve manter-se, por exemplo, alterar uma peça de roupa conservando a pessoa, o movimento e o fundo. O resultado da edição exige uma comparação com o clipe de origem completo, e não apenas com um fotograma que mostra a substituição pretendida.
O guia exato de edição da versão 1.0 aceita filmagens de origem MP4 ou MOV, recomenda H.264 e permite durações de origem entre três e sessenta segundos. Indica um máximo de 100 MB, um lado menor de pelo menos 360 píxeis, um lado maior até 4 096 píxeis, proporções entre 1:2.5 e 2.5:1 e uma taxa de fotogramas de entrada entre oito e sessenta fps. As edições de saída estão limitadas a três a quinze segundos: as fontes de quinze segundos ou menos conservam a duração, enquanto as mais longas utilizam apenas os primeiros quinze segundos. Corte previamente a passagem pretendida antes de preparar a edição quando uma ação importante ocorre mais adiante na fonte.
As imagens de referência opcionais do perfil de edição têm o seu próprio limite de vinte MB e exigem os formatos JPEG/JPG, PNG ou WEBP, ambas as dimensões de pelo menos 300 píxeis e o mesmo intervalo documentado de proporções. O guia distingue também o tratamento automático de áudio da conservação do áudio original. Prepare a referência que identifica a alteração pretendida e escolha como o som de origem deve relacionar-se com ela. Estes controlos são específicos do perfil de edição da versão 1.0, separados dos modos de geração de novas cenas.
Para os modos de geração da versão 1.0, a matriz exata do fabricante indica 720p ou 1080p, três a quinze segundos, MP4 a 24 fps e áudio. O perfil de edição também produz 720p ou 1080p dentro do seu limite de quinze segundos. O fluxo de tarefas documentado devolve primeiro um identificador de processamento e, após o sucesso, a localização do vídeo concluído; as localizações dos resultados são válidas durante vinte e quatro horas. Conserve o clipe efetivo, a instrução e as referências ao preparar uma montagem de produção e inspecione em conjunto o enquadramento, a duração e o som devolvidos.
HappyHorse 1.1 acrescenta uma opção de geração a 480p e melhorias identificadas no pormenor visual, no movimento e na consistência entre clipes. Essas afirmações de geração posteriores não constituem uma garantia para a revisão fixa do perfil 1.0. A preparação útil da versão 1.0 segue o modo selecionado e os seus materiais de origem efetivos. Reveja a identidade, o contacto, a geometria dos objetos, o texto e o som e torne concreta a correção seguinte. Num clipe editado, verifique também se os pormenores originais importantes fora da alteração pedida continuam adequados à cena pretendida.
Ailoot Ultra · Vídeo POST /v1/videos alibaba/happyhorse-1.0
alibaba/happyhorse-1.0Introdução
Alibaba HappyHorse 1.0 cria vídeos curtos com som a partir de texto, de uma imagem inicial ou de até nove imagens de referência. Os seus modos de geração produzem MP4 de 3–15 segundos a 24 fps, em 720p ou 1080p. Um perfil 1.0 de edição de vídeo, com nome próprio, revê filmagens fornecidas com referências visuais opcionais e limites próprios.
- Entradas aceites
- Texto · Imagens
- Resultados
- Vídeo
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Vídeo POST /v1/videos
- Entrada
text,image- Saída
video- Formato de saída
- bytes MP4 originais; sem normalização nem transcodificação
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites alibaba/happyhorse-1.0 | Predefinição— |
Campoprompt | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Campoduration | Tipointeger | RequisitoObrigatório | Valores e limites 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 Mínimo: 1 Máximo: 600 | Predefinição— |
Camporesolution | Tipostring | RequisitoOpcional | Valores e limites 720p, 1080p | Predefinição— |
Campoaspect_ratio | Tipostring | RequisitoOpcional | Valores e limites 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21 | Predefinição— |
Campogenerate_audio | Tipoboolean | RequisitoOpcional | Valores e limites false | Predefinição— |
Campoframe_images | Tipoarray | RequisitoOpcional | Valores e limites Número mínimo de elementos: 1 Número máximo de elementos: 1 Conteúdo de entrada: Matriz de objetos de fotograma. Cada objeto tem type=image_url, image_url com url e frame_type. Utilize um URL HTTPS de imagem e defina frame_type como first_frame. Cada função de fotograma aparece, no máximo, uma vez. Chaves exatas: type, image_url, frame_type Condições: Estas chaves descrevem cada objeto de fotograma; image_url contém apenas url. Omita frame_images num pedido apenas de texto. | Predefinição— |
Campoinput_references | Tipoarray | RequisitoOpcional | Valores e limites | Predefinição— |
Camposize | Tipostring | RequisitoOpcional | Valores e limites 1280x720, 720x1280, 720x720, 960x720, 720x960, 1680x720, 720x1680, 1920x1080, 1080x1920, 1080x1080, 1440x1080, 1080x1440, 2520x1080, 1080x2520 Padrão: ^[1-9][0-9]*x[1-9][0-9]*$ | Predefinição— |
Camposeed | Tipointeger | RequisitoOpcional | Valores e limites Mínimo: -9 223 372 036 854 775 808 Máximo: 9 223 372 036 854 775 807 | Predefinição— |
Campocallback_url | Tipostring | RequisitoOpcional | Valores e limites Padrão: ^https:// | Predefinição— |
Camposession_id | Tipostring | RequisitoOpcional | Valores e limites | Predefinição— |
Campotrace | Tipoobject | RequisitoOpcional | Valores e limites | Predefinição— |
Campouser | Tipostring | RequisitoOpcional | Valores e limites | Predefinição— |
Combinações de materiais de entrada
Texto para vídeo · Uma instrução escrita. · Obrigatório: model, prompt, duration
Forneça prompt como texto e duration em segundos inteiros. Escolha uma resolução suportada; adicione uma proporção ou utilize um tamanho enumerado.
model: Tipo: string · alibaba/happyhorse-1.0
prompt: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim
Imagem para vídeo · Uma instrução escrita e uma imagem do primeiro fotograma. · Obrigatório: model, prompt, duration, frame_images
frame_images é uma matriz. Cada objeto de fotograma tem type, image_url e frame_type; image_url contém url. Defina type como image_url. Utilize first_frame. Cada função de fotograma aparece, no máximo, uma vez. Forneça um URL HTTPS público de imagem para cada fotograma. Escolha uma resolução suportada; adicione uma proporção ou utilize um tamanho enumerado.
Chaves exatas: type, image_url, frame_type
model: Tipo: string · alibaba/happyhorse-1.0
prompt: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim
Reference to video · Uma instrução escrita e referências de imagem suportadas. · Obrigatório: model, prompt, duration, input_references
input_references é uma matriz de objetos. Defina type como image_url e utilize o campo correspondente que contém url. Utilize URLs HTTPS públicos. Omita frame_images para selecionar o modo de referência. Escolha uma resolução suportada; adicione uma proporção ou utilize um tamanho enumerado.
model: Tipo: string · alibaba/happyhorse-1.0
prompt: Tipo: string · Número máximo de bytes UTF-8: 10 000 · São obrigatórios caracteres que não sejam espaços: Sim
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratomodel, prompt, duration |
Parâmetromaterial_types | Contratotext, image |
Parâmetroadditional_properties | Contratofalse |
Parâmetrooptional_controls | Contratoresolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user |
Ciclo de vida: submit_once_poll_original
GET /v1/videos/{public_id}
GET /v1/videos/{public_id}/content
Tarifários
Cálculo do custo final
As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas estimadas para comparação
Preços por configuração
Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.
| Configuração | Tabela de tarifas | Quantidade prevista | Unidade de faturação | Condições de faturação | Custo |
|---|---|---|---|---|---|
| ConfiguraçãoTarifas base por token | Tabela de tarifasTarifa base | Quantidade prevista— | Unidade de faturação— | Condições de faturação— | Custo Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens |
| ConfiguraçãoPreço do vídeo | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor segundo de vídeo | Condições de faturaçãoresolution: 1080p | Custo Saída · Preço do vídeo · Estimativa apenas para comparação $0.3388 por segundo de vídeo |
| ConfiguraçãoPreço do vídeo | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor segundo de vídeo | Condições de faturaçãoresolution: 720p | Custo Saída · Preço do vídeo · Estimativa apenas para comparação $0.1976 por segundo de vídeo |
| ConfiguraçãoCusto estimado de geração | Tabela de tarifas— | Quantidade previstaestimativa para uma geração | Unidade de faturação— | Condições de faturação— | Custo Saída · Custo estimado de geração · Estimativa apenas para comparação $0.5928 estimativa antes da geração Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída. |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Detalhes da tarifa de referência
As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.
Referências de preços das configurações de vídeo
Preços por configuração
Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.
| Configuração | Condições de faturação | Custo |
|---|---|---|
| ConfiguraçãoPreço do vídeo | Condições de faturaçãoresolution: 720p | Custo Saída · Preço do vídeo $0.1976 por segundo de vídeo Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada. |
| ConfiguraçãoPreço do vídeo | Condições de faturaçãoresolution: 1080p | Custo Saída · Preço do vídeo $0.3388 por segundo de vídeo Referência de preço publicada para a configuração apresentada. Os montantes finais cobrados seguem a configuração efetivamente faturada. |
Exemplos de pedidos
Ailoot Ultra · Vídeo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
from pathlib import Path
Path('request.json').write_text('{"aspect_ratio":"16:9","duration":3,"model":"alibaba/happyhorse-1.0","prompt":"A serene mountain landscape at sunset","resolution":"720p"}', encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('result.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Receber e guardar os resultados
Ailoot Ultra · Vídeo
URLs assinados para conteúdo pertencente ao utilizador
GET /v1/videos/{public_id}GET /v1/videos/{public_id}/content
Verificar o estado da tarefa
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Outras leituras de conteúdo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
Guardar todos os resultados concluídos
Guarde cada vídeo concluído ou ficheiro devolvido; obtenha cada URL de recurso efetivamente devolvido.
Conserve todos os resultados reais que pertencem ao utilizador e os respetivos metadados medidos devolvidos.
Se for necessário verificar a resposta original
503 result_pending_check + id original + X-Should-Retry:false; nunca repita o original
Campos da resposta
| Campo | Tipo | Significado |
|---|---|---|
Campoindex | Tipointeger | SignificadoPosição deste vídeo na lista de saídas, com contagem a partir de zero. |
Campocontent_url | Tipostring | SignificadoURL HTTPS assinado para transferir este vídeo concluído. |
Camposha256 | Tipostring | null | SignificadoResumo criptográfico SHA-256 dos bytes do vídeo original; null se não estiver disponível. |
Camposize_bytes | Tipointeger | null | SignificadoTamanho do ficheiro de vídeo original em bytes; null se não estiver disponível. |
Campoduration_ms | Tipointeger | null | SignificadoDuração medida do vídeo em milissegundos; null se não estiver disponível. |
Campowidth | Tipointeger | null | SignificadoLargura do vídeo em píxeis; null se não estiver disponível. |
Campoheight | Tipointeger | null | SignificadoAltura do vídeo em píxeis; null se não estiver disponível. |
Campovideo_codec | Tipostring | null | SignificadoIdentificador do codec de vídeo; null se não estiver registado. |
Campohas_audio | Tipoboolean | null | SignificadoIndica se o vídeo contém uma faixa de áudio; null se não tiver sido medido. |
Campoaudio_codec | Tipostring | null | SignificadoIdentificador do codec de áudio; null quando não está registado qualquer identificador. |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta404 · not_found_error | CondiçãoO acesso ao vídeo não está disponível ou este ID de vídeo não foi encontrado. | Passo seguinteVerifique o acesso ao vídeo. Para um vídeo existente, utilize o ID público original e a mesma chave API. |
Resposta401 · authentication_error | CondiçãoA chave API não corresponde à conta autenticada. | Passo seguinteVerifique a sua chave API e o acesso à conta antes de enviar. |
Resposta400 · invalid_request_error | CondiçãoNão foi possível ler o pedido ou o índice de transferência é inválido. | Passo seguinteCorrija o corpo do pedido. Para uma transferência, escolha um índice de saída devolvido pela tarefa original. |
Resposta422 · price_unavailable | CondiçãoNão é possível calcular o preço da configuração de vídeo selecionada. | Passo seguinteEscolha uma configuração de vídeo suportada e preencha as opções obrigatórias antes de enviar um pedido corrigido. |
Resposta422 · invalid_request_error | CondiçãoUma entrada de vídeo ou a tarefa original de continuação é inválida. | Passo seguinteUtilize entradas HTTPS válidas. Para continuação, utilize o ID público do seu vídeo original concluído com a mesma chave API. |
Resposta402 · billing_error | CondiçãoO saldo disponível ou os limites não permitem efetuar uma reserva. | Passo seguinteVerifique o saldo disponível e os limites antes de enviar um novo pedido. |
Resposta503 · server_error | CondiçãoA verificação, o armazenamento ou o acesso ao serviço de vídeo está temporariamente indisponível. | Passo seguinteAguarde a disponibilidade do serviço. Se já tiver um ID de vídeo, consulte essa tarefa original em vez de criar outra geração. |
Resposta503 · result_pending_check | CondiçãoO resultado e a cobrança do vídeo original precisam de verificação. | Passo seguinteConserve o ID de vídeo devolvido e consulte essa tarefa. Não envie um pedido de geração substituto enquanto estiver a ser verificada. |
Resposta503 · owned_result_unavailable | CondiçãoA transferência do vídeo existente está temporariamente indisponível. | Passo seguinteConsulte a mesma tarefa de vídeo mais tarde e transfira a saída existente. Uma nova geração cria uma operação separada. |
Resposta409 · video_not_ready | CondiçãoO conteúdo do vídeo não foi publicado. | Passo seguinteConsulte o estado da tarefa original. Transfira quando indicar completed; se indicar failed, siga o aviso de verificação da cobrança. |
Aliases
Aliases do modelo
Ailoot Ultra alibaba/happyhorse-1.0
Aliases dos caminhos dos métodos
Use os caminhos dos métodos indicados acima.
IDs de chamada relacionados
FAQ · Alibaba: HappyHorse 1.0
- Que entradas e resultados estão disponíveis?
POST /v1/videos·alibaba/happyhorse-1.0:text,image→video- Que campos utiliza o pedido?
POST /v1/videos·alibaba/happyhorse-1.0:model,prompt,duration,resolution,aspect_ratio,generate_audio,frame_images,input_references,size,seed,callback_url,session_id,trace,user- Que limites se aplicam?
POST /v1/videos·alibaba/happyhorse-1.0:duration.minimum:1;duration.maximum:600;frame_images.max_items:1;frame_images.min_items:1;seed.minimum:-9223372036854775808;seed.maximum:9223372036854775807