swag_video.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. )
  5. // VideoGenerations
  6. // @Summary 生成视频
  7. // @Description 调用视频生成接口生成视频
  8. // @Description 支持多种视频生成服务:
  9. // @Description - 可灵AI (Kling): https://app.klingai.com/cn/dev/document-api/apiReference/commonInfo
  10. // @Description - 即梦 (Jimeng): https://www.volcengine.com/docs/85621/1538636
  11. // @Tags Video
  12. // @Accept json
  13. // @Produce json
  14. // @Param Authorization header string true "用户认证令牌 (Aeess-Token: sk-xxxx)"
  15. // @Param request body dto.VideoRequest true "视频生成请求参数"
  16. // @Failure 400 {object} dto.OpenAIError "请求参数错误"
  17. // @Failure 401 {object} dto.OpenAIError "未授权"
  18. // @Failure 403 {object} dto.OpenAIError "无权限"
  19. // @Failure 500 {object} dto.OpenAIError "服务器内部错误"
  20. // @Router /v1/video/generations [post]
  21. func VideoGenerations(c *gin.Context) {
  22. }
  23. // VideoGenerationsTaskId
  24. // @Summary 查询视频
  25. // @Description 根据任务ID查询视频生成任务的状态和结果
  26. // @Tags Video
  27. // @Accept json
  28. // @Produce json
  29. // @Security BearerAuth
  30. // @Param task_id path string true "Task ID"
  31. // @Success 200 {object} dto.VideoTaskResponse "任务状态和结果"
  32. // @Failure 400 {object} dto.OpenAIError "请求参数错误"
  33. // @Failure 401 {object} dto.OpenAIError "未授权"
  34. // @Failure 403 {object} dto.OpenAIError "无权限"
  35. // @Failure 500 {object} dto.OpenAIError "服务器内部错误"
  36. // @Router /v1/video/generations/{task_id} [get]
  37. func VideoGenerationsTaskId(c *gin.Context) {
  38. }
  39. // KlingText2VideoGenerations
  40. // @Summary 可灵文生视频
  41. // @Description 调用可灵AI文生视频接口,生成视频内容
  42. // @Tags Video
  43. // @Accept json
  44. // @Produce json
  45. // @Param Authorization header string true "用户认证令牌 (Aeess-Token: sk-xxxx)"
  46. // @Param request body KlingText2VideoRequest true "视频生成请求参数"
  47. // @Success 200 {object} dto.VideoTaskResponse "任务状态和结果"
  48. // @Failure 400 {object} dto.OpenAIError "请求参数错误"
  49. // @Failure 401 {object} dto.OpenAIError "未授权"
  50. // @Failure 403 {object} dto.OpenAIError "无权限"
  51. // @Failure 500 {object} dto.OpenAIError "服务器内部错误"
  52. // @Router /kling/v1/videos/text2video [post]
  53. func KlingText2VideoGenerations(c *gin.Context) {
  54. }
  55. type KlingText2VideoRequest struct {
  56. ModelName string `json:"model_name,omitempty" example:"kling-v1"`
  57. Prompt string `json:"prompt" binding:"required" example:"A cat playing piano in the garden"`
  58. NegativePrompt string `json:"negative_prompt,omitempty" example:"blurry, low quality"`
  59. CfgScale float64 `json:"cfg_scale,omitempty" example:"0.7"`
  60. Mode string `json:"mode,omitempty" example:"std"`
  61. CameraControl *KlingCameraControl `json:"camera_control,omitempty"`
  62. AspectRatio string `json:"aspect_ratio,omitempty" example:"16:9"`
  63. Duration string `json:"duration,omitempty" example:"5"`
  64. CallbackURL string `json:"callback_url,omitempty" example:"https://your.domain/callback"`
  65. ExternalTaskId string `json:"external_task_id,omitempty" example:"custom-task-001"`
  66. }
  67. type KlingCameraControl struct {
  68. Type string `json:"type,omitempty" example:"simple"`
  69. Config *KlingCameraConfig `json:"config,omitempty"`
  70. }
  71. type KlingCameraConfig struct {
  72. Horizontal float64 `json:"horizontal,omitempty" example:"2.5"`
  73. Vertical float64 `json:"vertical,omitempty" example:"0"`
  74. Pan float64 `json:"pan,omitempty" example:"0"`
  75. Tilt float64 `json:"tilt,omitempty" example:"0"`
  76. Roll float64 `json:"roll,omitempty" example:"0"`
  77. Zoom float64 `json:"zoom,omitempty" example:"0"`
  78. }
  79. // KlingImage2VideoGenerations
  80. // @Summary 可灵官方-图生视频
  81. // @Description 调用可灵AI图生视频接口,生成视频内容
  82. // @Tags Video
  83. // @Accept json
  84. // @Produce json
  85. // @Param Authorization header string true "用户认证令牌 (Aeess-Token: sk-xxxx)"
  86. // @Param request body KlingImage2VideoRequest true "图生视频请求参数"
  87. // @Success 200 {object} dto.VideoTaskResponse "任务状态和结果"
  88. // @Failure 400 {object} dto.OpenAIError "请求参数错误"
  89. // @Failure 401 {object} dto.OpenAIError "未授权"
  90. // @Failure 403 {object} dto.OpenAIError "无权限"
  91. // @Failure 500 {object} dto.OpenAIError "服务器内部错误"
  92. // @Router /kling/v1/videos/image2video [post]
  93. func KlingImage2VideoGenerations(c *gin.Context) {
  94. }
  95. type KlingImage2VideoRequest struct {
  96. ModelName string `json:"model_name,omitempty" example:"kling-v2-master"`
  97. Image string `json:"image" binding:"required" example:"https://h2.inkwai.com/bs2/upload-ylab-stunt/se/ai_portal_queue_mmu_image_upscale_aiweb/3214b798-e1b4-4b00-b7af-72b5b0417420_raw_image_0.jpg"`
  98. Prompt string `json:"prompt,omitempty" example:"A cat playing piano in the garden"`
  99. NegativePrompt string `json:"negative_prompt,omitempty" example:"blurry, low quality"`
  100. CfgScale float64 `json:"cfg_scale,omitempty" example:"0.7"`
  101. Mode string `json:"mode,omitempty" example:"std"`
  102. CameraControl *KlingCameraControl `json:"camera_control,omitempty"`
  103. AspectRatio string `json:"aspect_ratio,omitempty" example:"16:9"`
  104. Duration string `json:"duration,omitempty" example:"5"`
  105. CallbackURL string `json:"callback_url,omitempty" example:"https://your.domain/callback"`
  106. ExternalTaskId string `json:"external_task_id,omitempty" example:"custom-task-002"`
  107. }