MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / generate_video_start_end

Method generate_video_start_end

src/services/flow_client.py:3125–3272  ·  view source on GitHub ↗

收尾帧生成视频,返回task_id Args: at: Access Token project_id: 项目ID prompt: 提示词 model_key: veo_3_1_i2v_s_fast_fl aspect_ratio: 视频宽高比 start_media_id: 起始帧mediaId end_media_id: 结束帧mediaId user_paygate_tier: 用

(
        self,
        at: str,
        project_id: str,
        prompt: str,
        model_key: str,
        aspect_ratio: str,
        start_media_id: str,
        end_media_id: str,
        use_v2_model_config: bool = False,
        user_paygate_tier: str = "PAYGATE_TIER_ONE",
        token_id: Optional[int] = None,
        token_video_concurrency: Optional[int] = None,
    )

Source from the content-addressed store, hash-verified

3123 raise last_error
3124
3125 async def generate_video_start_end(
3126 self,
3127 at: str,
3128 project_id: str,
3129 prompt: str,
3130 model_key: str,
3131 aspect_ratio: str,
3132 start_media_id: str,
3133 end_media_id: str,
3134 use_v2_model_config: bool = False,
3135 user_paygate_tier: str = "PAYGATE_TIER_ONE",
3136 token_id: Optional[int] = None,
3137 token_video_concurrency: Optional[int] = None,
3138 ) -> dict:
3139 """收尾帧生成视频,返回task_id
3140
3141 Args:
3142 at: Access Token
3143 project_id: 项目ID
3144 prompt: 提示词
3145 model_key: veo_3_1_i2v_s_fast_fl
3146 aspect_ratio: 视频宽高比
3147 start_media_id: 起始帧mediaId
3148 end_media_id: 结束帧mediaId
3149 user_paygate_tier: 用户等级
3150
3151 Returns:
3152 同 generate_video_text
3153 """
3154 url = f"{self.api_base_url}/video:batchAsyncGenerateVideoStartAndEndImage"
3155
3156 # 403/reCAPTCHA 重试逻辑 - reCAPTCHA evaluation failed 时允许更高重试上限
3157 max_retries = self._resolve_generation_retry_budget(config.flow_max_retries)
3158 last_error = None
3159 retry_attempt = 0
3160 session_id = self._generate_session_id()
3161 batch_id = str(uuid.uuid4())
3162 video_context_warmed = False
3163 while retry_attempt < max_retries:
3164 # 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
3165 launch_gate_acquired = False
3166 launch_ok, _, _ = await self._acquire_video_launch_gate(
3167 token_id=token_id,
3168 token_video_concurrency=token_video_concurrency,
3169 )
3170 if not launch_ok:
3171 last_error = Exception("Video launch queue wait timeout")
3172 raise last_error
3173
3174 launch_gate_acquired = True
3175 try:
3176 recaptcha_token, browser_id = await self._get_recaptcha_token(
3177 project_id,
3178 action="VIDEO_GENERATION",
3179 token_id=token_id
3180 )
3181 finally:
3182 if launch_gate_acquired: