| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package hailuo
- type SubjectReference struct {
- Type string `json:"type"` // Subject type, currently only supports "character"
- Image []string `json:"image"` // Array of subject reference images (currently only supports single image)
- }
- type VideoRequest struct {
- Model string `json:"model"`
- Prompt string `json:"prompt,omitempty"`
- PromptOptimizer *bool `json:"prompt_optimizer,omitempty"`
- FastPretreatment *bool `json:"fast_pretreatment,omitempty"`
- Duration *int `json:"duration,omitempty"`
- Resolution string `json:"resolution,omitempty"`
- CallbackURL string `json:"callback_url,omitempty"`
- AigcWatermark *bool `json:"aigc_watermark,omitempty"`
- FirstFrameImage string `json:"first_frame_image,omitempty"` // For image-to-video and start-end-to-video
- LastFrameImage string `json:"last_frame_image,omitempty"` // For start-end-to-video
- SubjectReference []SubjectReference `json:"subject_reference,omitempty"` // For subject-reference-to-video
- }
- type VideoResponse struct {
- TaskID string `json:"task_id"`
- BaseResp BaseResp `json:"base_resp"`
- }
- type BaseResp struct {
- StatusCode int `json:"status_code"`
- StatusMsg string `json:"status_msg"`
- }
- type QueryTaskRequest struct {
- TaskID string `json:"task_id"`
- }
- type QueryTaskResponse struct {
- TaskID string `json:"task_id"`
- Status string `json:"status"`
- FileID string `json:"file_id,omitempty"`
- VideoWidth int `json:"video_width,omitempty"`
- VideoHeight int `json:"video_height,omitempty"`
- BaseResp BaseResp `json:"base_resp"`
- }
- type ErrorInfo struct {
- StatusCode int `json:"status_code"`
- StatusMsg string `json:"status_msg"`
- }
- type TaskStatusInfo struct {
- TaskID string `json:"task_id"`
- Status string `json:"status"`
- FileID string `json:"file_id,omitempty"`
- VideoURL string `json:"video_url,omitempty"`
- ErrorCode int `json:"error_code,omitempty"`
- ErrorMsg string `json:"error_msg,omitempty"`
- }
- type ModelConfig struct {
- Name string
- DefaultResolution string
- SupportedDurations []int
- SupportedResolutions []string
- HasPromptOptimizer bool
- HasFastPretreatment bool
- }
- type RetrieveFileResponse struct {
- File FileObject `json:"file"`
- BaseResp BaseResp `json:"base_resp"`
- }
- type FileObject struct {
- FileID int64 `json:"file_id"`
- Bytes int64 `json:"bytes"`
- CreatedAt int64 `json:"created_at"`
- Filename string `json:"filename"`
- Purpose string `json:"purpose"`
- DownloadURL string `json:"download_url"`
- }
- func GetModelConfig(model string) ModelConfig {
- configs := map[string]ModelConfig{
- "MiniMax-Hailuo-2.3": {
- Name: "MiniMax-Hailuo-2.3",
- DefaultResolution: Resolution768P,
- SupportedDurations: []int{6, 10},
- SupportedResolutions: []string{Resolution768P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: true,
- },
- "MiniMax-Hailuo-2.3-Fast": {
- Name: "MiniMax-Hailuo-2.3-Fast",
- DefaultResolution: Resolution768P,
- SupportedDurations: []int{6, 10},
- SupportedResolutions: []string{Resolution768P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: true,
- },
- "MiniMax-Hailuo-02": {
- Name: "MiniMax-Hailuo-02",
- DefaultResolution: Resolution768P,
- SupportedDurations: []int{6, 10},
- SupportedResolutions: []string{Resolution512P, Resolution768P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: true,
- },
- "T2V-01-Director": {
- Name: "T2V-01-Director",
- DefaultResolution: Resolution768P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution768P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- "T2V-01": {
- Name: "T2V-01",
- DefaultResolution: Resolution720P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution720P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- "I2V-01-Director": {
- Name: "I2V-01-Director",
- DefaultResolution: Resolution720P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution720P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- "I2V-01-live": {
- Name: "I2V-01-live",
- DefaultResolution: Resolution720P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution720P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- "I2V-01": {
- Name: "I2V-01",
- DefaultResolution: Resolution720P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution720P, Resolution1080P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- "S2V-01": {
- Name: "S2V-01",
- DefaultResolution: Resolution720P,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{Resolution720P},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- },
- }
- if config, exists := configs[model]; exists {
- return config
- }
- return ModelConfig{
- Name: model,
- DefaultResolution: DefaultResolution,
- SupportedDurations: []int{6},
- SupportedResolutions: []string{DefaultResolution},
- HasPromptOptimizer: true,
- HasFastPretreatment: false,
- }
- }
|