Dela via


Snabbstart: Generera en video med Sora (förhandsversion)

I den här snabbstarten genererar du videoklipp med hjälp av Azure OpenAI-tjänsten. I exemplet används Sora-modellen, som är en videogenereringsmodell som skapar realistiska och fantasifulla videoscener från textinstruktioner och/eller bild- eller videoindata. Den här guiden visar hur du skapar ett videogenereringsjobb, söker efter dess status och hämtar den genererade videon.

Mer information om videogenerering finns i Begrepp för videogenerering.

Förutsättningar

Gå till Azure AI Foundry-portalen

Bläddra till Azure AI Foundry-portalen och logga in med de autentiseringsuppgifter som är associerade med din Azure OpenAI-resurs. Under eller efter inloggningsarbetsflödet väljer du lämplig katalog, Azure-prenumeration och Azure OpenAI-resurs.

På landningssidan för Azure AI Foundry skapar eller väljer du ett nytt projekt. Gå till sidan Modeller + slutpunkter i det vänstra navigeringsfältet . Välj Distribuera modell och välj sedan Sora-videogenereringsmodellen i listan. Slutför distributionsprocessen.

På modellens sida väljer du Öppna på lekplatsen.

Prova videogenerering

Börja utforska Sora-videogenereringen utan kod via videolekplatsen. Ange din fråga i textrutan och välj Generera. När den AI-genererade videon är klar visas den på sidan.

Anmärkning

API:erna för innehållsgenerering levereras med ett filter för innehållsmoderering. Om Azure OpenAI identifierar din fråga som skadligt innehåll returnerar den inte en genererad video. Mer information finns i Innehållsfiltrering.

I Video Playground kan du också visa Python- och cURL-kodexempel, som är förfyllda enligt dina inställningar. Välj kodknappen överst i videouppspelningsfönstret. Du kan använda den här koden för att skriva ett program som slutför samma uppgift.

Förutsättningar

Krav för Microsoft Entra-ID

För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID måste du:

  • Installera Azure CLI som används för nyckellös autentisering med Microsoft Entra-ID.
  • Cognitive Services User Tilldela rollen till ditt användarkonto. Du kan tilldela roller i Azure-portalen under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Ställ in

  1. Skapa en ny mapp video-generation-quickstart och gå till snabbstartsmappen med följande kommando:

    mkdir video-generation-quickstart && cd video-generation-quickstart
    
  2. Skapa en virtuell miljö. Om du redan har Python 3.10 eller senare installerat kan du skapa en virtuell miljö med hjälp av följande kommandon:

    py -3 -m venv .venv
    .venv\scripts\activate
    

    När du aktiverar Python-miljön innebär det att när du kör python eller pip från kommandoraden använder du sedan Python-tolken .venv som finns i mappen för ditt program. Du kan använda deactivate kommandot för att avsluta den virtuella python-miljön och senare återaktivera den när det behövs.

    Tips/Råd

    Vi rekommenderar att du skapar och aktiverar en ny Python-miljö som ska användas för att installera de paket som du behöver för den här självstudien. Installera inte paket i din globala Python-installation. Du bör alltid använda en virtuell miljö eller conda-miljö när du installerar Python-paket, annars kan du avbryta den globala installationen av Python.

  3. För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID installerar du azure-identity paketet med:

    pip install azure-identity
    

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure-portalen.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns underResurshanteringsmodelldistributioner> i Azure-portalen.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Generera video med Sora

Du kan generera en video med Sora-modellen genom att skapa ett videogenereringsjobb, söka efter dess status och hämta den genererade videon. Följande kod visar hur du gör detta via REST-API:et med Python.

  1. Skapa filen och lägg till följande kod för att autentisera resursen sora-quickstart.py :

    import requests
    import base64 
    import os
    from azure.identity import DefaultAzureCredential
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    credential = DefaultAzureCredential()
    token = credential.get_token("https://cognitiveservices.azure.com/.default")
    
    api_version = 'preview'
    headers= { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" }
    
  2. Skapa videogenereringsjobbet. Du kan bara skapa den från en textprompt eller från en indatabild och en textprompt.

    # 1. Create a video generation job
    create_url = f"{endpoint}/openai/v1/video/generations/jobs?api-version={api_version}"
    body = {
        "prompt": "A cat playing piano in a jazz bar.",
        "width": 480,
        "height": 480,
        "n_seconds": 5,
        "model": "sora"
    }
    response = requests.post(create_url, headers=headers, json=body)
    response.raise_for_status()
    print("Full response JSON:", response.json())
    job_id = response.json()["id"]
    print(f"Job created: {job_id}")
    
    # 2. Poll for job status
    status_url = f"{endpoint}/openai/v1/video/generations/jobs/{job_id}?api-version={api_version}"
    status=None
    while status not in ("succeeded", "failed", "cancelled"):
        time.sleep(5)  # Wait before polling again
        status_response = requests.get(status_url, headers=headers).json()
        status = status_response.get("status")
        print(f"Job status: {status}")
    
    # 3. Retrieve generated video 
    if status == "succeeded":
        generations = status_response.get("generations", [])
        if generations:
            print(f"✅ Video generation succeeded.")
            generation_id = generations[0].get("id")
            video_url = f"{endpoint}/openai/v1/video/generations/{generation_id}/content/video?api-version={api_version}"
            video_response = requests.get(video_url, headers=headers)
            if video_response.ok:
                output_filename = "output.mp4"
                with open(output_filename, "wb") as file:
                    file.write(video_response.content)
                    print(f'Generated video saved as "{output_filename}"')
        else:
            raise Exception("No generations found in job result.")
    else:
        raise Exception(f"Job didn't succeed. Status: {status}")
    
  3. Kör Python-filen.

    python sora-quickstart.py
    

    Vänta en stund för att få svaret.

Utgång

Utdata visar det fullständiga svaret JSON från begäran om att skapa videogenereringsjobb, inklusive jobb-ID och status.

{
    "object": "video.generation.job",
    "id": "task_01jwcet0eje35tc5jy54yjax5q",
    "status": "queued",
    "created_at": 1748469875,
    "finished_at": null,
    "expires_at": null,
    "generations": [],
    "prompt": "A cat playing piano in a jazz bar.",
    "model": "sora",
    "n_variants": 1,
    "n_seconds": 5,
    "height": 480,
    "width": 480,
    "failure_reason": null
}

Den genererade videon sparas som output.mp4 i den aktuella katalogen.

Job created: task_01jwcet0eje35tc5jy54yjax5q
Job status: preprocessing
Job status: running
Job status: processing
Job status: succeeded
✅ Video generation succeeded.
Generated video saved as "output.mp4"

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.