跳转到内容

Model Capabilities

视频编辑

通过提供源视频和提示词来编辑现有视频。模型能够理解视频内容并应用您请求的更改。

您可以将源视频作为公共 URL、base64 编码的数据 URI 或来自 Files APIfile_id 提供。有关使用 file_id 输入的信息,请参阅 Imagine → Files API Integration

WARNING

下面的演示展示了视频编辑的实际效果。grok-imagine-video 提供高保真编辑,同时保持场景完整性,只修改您要求的部分,同时保持视频的其余部分不变:

在 Vercel AI SDK 中,通过将 providerOptions.xai.mode 设置为 "edit-video" 并传递带有源视频 URL 的 providerOptions.xai.videoUrl 来触发视频编辑。prompt 描述所需的修改;durationaspectRatioresolution 会被忽略,因为输出会从输入视频继承这些属性,最高限制为 720p。

并发请求

当您需要对同一源视频应用多个编辑时,请并发运行请求。这对于从同一中间结果分支出多个编辑非常有用。

python
import os
import asyncio
import xai_sdk

async def edit_concurrently():
    client = xai_sdk.AsyncClient(api_key=os.getenv("XAI_API_KEY"))

    source_video = "https://data.x.ai/docs/video-generation/portrait-wave.mp4"

    prompts = [
        "Give the woman a silver necklace",
        "Change the color of the woman's outfit to red",
        "Give the woman a wide-brimmed black hat",
    ]

    tasks = [
        client.video.generate(
            prompt=prompt,
            model="grok-imagine-video",
            video_url=source_video,
        )
        for prompt in prompts
    ]

    results = await asyncio.gather(*tasks)

    for prompt, result in zip(prompts, results):
        print(f"{prompt}: {result.url}")

asyncio.run(edit_concurrently())
javascript
import { xai, type XaiVideoModelOptions } from "@ai-sdk/xai";
import { experimental_generateVideo as generateVideo } from "ai";

const providerOptions = {
    xai: {
        mode: "edit-video",
        videoUrl: "https://example.com/source-video.mp4",
        pollTimeoutMs: 600000,
    } satisfies XaiVideoModelOptions,
};

const step1 = await generateVideo({
    model: xai.video("grok-imagine-video"),
    prompt: "Add a party hat to the person",
    providerOptions,
});

const step1VideoUrl = step1.providerMetadata?.xai?.videoUrl as string;

const [withSunglasses, withScarf] = await Promise.all([
    generateVideo({
        model: xai.video("grok-imagine-video"),
        prompt: "Add sunglasses",
        providerOptions: {
            xai: {
                mode: "edit-video",
                videoUrl: step1VideoUrl,
                pollTimeoutMs: 600000,
            } satisfies XaiVideoModelOptions,
        },
    }),
    generateVideo({
        model: xai.video("grok-imagine-video"),
        prompt: "Add a scarf",
        providerOptions: {
            xai: {
                mode: "edit-video",
                videoUrl: step1VideoUrl,
                pollTimeoutMs: 600000,
            } satisfies XaiVideoModelOptions,
        },
    }),
]);

console.log(withSunglasses.providerMetadata?.xai?.videoUrl);
console.log(withScarf.providerMetadata?.xai?.videoUrl);

相关

本文档为 docs.x.ai 全站中文翻译,由 AI 自动翻译生成。代码示例请以原文为准。