Tutorial: Livestreaming mit Media ServicesTutorial: Stream live with Media Services

Hinweis

Auch wenn in diesem Tutorial die .NET SDK-Beispiele verwendet werden, sind die allgemeinen Schritte für die REST-API, die CLI oder für andere unterstützte SDKs identisch.Even though the tutorial uses .NET SDK examples, the general steps are the same for REST API, CLI, or other supported SDKs.

In Azure Media Services sind Liveereignisse für die Verarbeitung von Livestreaminginhalten zuständig.In Azure Media Services, Live Events are responsible for processing live streaming content. Ein Liveereignis stellt einen Eingabeendpunkt (Erfassungs-URL) bereit, den Sie dann für einen Liveencoder bereitstellen.A Live Event provides an input endpoint (ingest URL) that you then provide to a live encoder. Das Liveereignis empfängt Live-Eingabestreams aus dem Liveencoder und stellt diese zum Streamen durch einen oder mehrere Streamingendpunkte zur Verfügung.The Live Event receives live input streams from the live encoder and makes it available for streaming through one or more Streaming Endpoints. Zudem stellen Liveereignisse einen Vorschauendpunkt (Vorschau-URL) bereit, mit dem Sie eine Vorschau des Streams anzeigen und überprüfen können, bevor Sie ihn weiter verarbeiten und übermitteln.Live Events also provide a preview endpoint (preview URL) that you use to preview and validate your stream before further processing and delivery. In diesem Tutorial erfahren Sie, wie Sie unter Verwendung von .NET Core ein Liveereignis vom Typ Pass-Through erstellen.This tutorial shows how to use .NET Core to create a pass-through type of a live event.

Das Tutorial veranschaulicht folgende Vorgehensweisen:The tutorial shows you how to:

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

VoraussetzungenPrerequisites

Für dieses Tutorial benötigen Sie Folgendes:The following items are required to complete the tutorial:

  • Installieren Sie Visual Studio Code oder Visual Studio.Install Visual Studio Code or Visual Studio.
  • Erstellen Sie ein Media Services-Konto.Create a Media Services account.
    Merken Sie sich die Werte, die Sie für die Namen von Ressourcengruppe und Media Services-Konto verwendet haben.Make sure to remember the values you use for the resource group name and Media Services account name.
  • Führen Sie die Schritte unter Zugreifen auf die Azure Media Services-API mit der Azure CLI aus, und speichern Sie die Anmeldeinformationen.Follow the steps in Access Azure Media Services API with the Azure CLI and save the credentials. Sie benötigen sie für den Zugriff auf die API.You'll need to use them to access the API.
  • Eine Kamera oder ein Gerät (beispielsweise ein Laptop) zum Übertragen eines Ereignisses.A camera or a device (like a laptop) that's used to broadcast an event.
  • Ein lokaler Liveencoder, der Signale der Kamera in Datenströme konvertiert, die an den Media Services-Livestreamingdienst gesendet werden. Weitere Informationen finden Sie unter Empfohlene Livestreaming-Encoder.An on-premises live encoder that converts signals from the camera to streams that are sent to the Media Services live streaming service, see recommended on-premises live encoders. Der Datenstrom muss das Format RTMP oder Smooth Streaming haben.The stream has to be in RTMP or Smooth Streaming format.

Tipp

Lesen Sie Live streaming with Azure Media Services v3 (Livestreaming mit Azure Media Services v3), bevor Sie mit diesem Tutorial fortfahren.Make sure to review Live streaming with Media Services v3 before proceeding.

Herunterladen und Konfigurieren des BeispielsDownload and configure the sample

Klonen Sie ein GitHub-Repository auf Ihren Computer, das das .NET-Streamingbeispiel enthält, indem Sie den folgenden Befehl verwenden:Clone a GitHub repository that contains the streaming .NET sample to your machine using the following command:

git clone https://github.com/Azure-Samples/media-services-v3-dotnet-core-tutorials.git

Das Livestreamingbeispiel befindet sich im Ordner Live.The live streaming sample is located in the Live folder.

Öffnen Sie in Ihrem heruntergeladenen Projekt die Datei appsettings.json.Open appsettings.json in your downloaded project. Ersetzen Sie die Werte durch die Anmeldeinformationen, die Sie per API-Zugriff abgerufen haben.Replace the values with the credentials you got from accessing APIs.

Wichtig

In diesem Beispiel wird für jede Ressourcen ein eindeutiges Suffix verwendet.This sample uses a unique suffix for each resource. Wenn Sie das Debuggen abbrechen oder die App beenden, ohne das Beispiel vollständig zu durchlaufen, werden in Ihrem Konto mehrere Liveereignisse generiert.If you cancel the debugging or terminate the app without running it through, you'll end up with multiple Live Events in your account.
Die aktiven Liveereignisse müssen unbedingt beendet werden.Make sure to stop the running Live Events. Andernfalls fallen für die Ereignisse Kosten an!Otherwise, you'll be billed!

Untersuchen des Codes für LivestreamingExamine the code that performs live streaming

In diesem Abschnitt werden die Funktionen untersucht, die in der Datei Program.cs des Projekts MediaV3LiveApp definiert werden.This section examines functions defined in the Program.cs file of the MediaV3LiveApp project.

Das Beispiel erstellt für jede Ressource ein eindeutiges Suffix, damit keine Namenskonflikte auftreten, wenn Sie das Beispiel ohne Bereinigung der Ressourcen mehrmals ausführen.The sample creates a unique suffix for each resource so that you don't have name collisions if you run the sample multiple times without cleaning up.

Wichtig

In diesem Beispiel wird für jede Ressourcen ein eindeutiges Suffix verwendet.This sample uses a unique suffix for each resource. Wenn Sie das Debuggen abbrechen oder die App beenden, ohne das Beispiel vollständig zu durchlaufen, werden in Ihrem Konto mehrere Liveereignisse generiert.If you cancel the debugging or terminate the app without running it through, you'll end up with multiple Live Events in your account.
Die aktiven Liveereignisse müssen unbedingt beendet werden.Make sure to stop the running Live Events. Andernfalls fallen für die Ereignisse Kosten an!Otherwise, you'll be billed!

Starten der Verwendung von Media Services-APIs mit dem .NET SDKStart using Media Services APIs with .NET SDK

Um mit der Verwendung von Media Services-APIs in .NET zu beginnen, müssen Sie ein AzureMediaServicesClient-Objekt erstellen.To start using Media Services APIs with .NET, you need to create an AzureMediaServicesClient object. Zum Erstellen des Objekts müssen Sie Anmeldeinformationen bereitstellen, die für den Client zum Herstellen einer Verbindung mit Azure mithilfe von Azure AD erforderlich sind.To create the object, you need to supply credentials needed for the client to connect to Azure using Azure AD. In dem Code, den Sie zu Beginn des Artikels geklont haben, erstellt die Funktion GetCredentialsAsync das ServiceClientCredentials-Objekt basierend auf den in der lokalen Konfigurationsdatei angegebenen Anmeldeinformationen.In the code you cloned at the beginning of the article, the GetCredentialsAsync function creates the ServiceClientCredentials object based on the credentials supplied in local configuration file.

private static async Task<IAzureMediaServicesClient> CreateMediaServicesClientAsync(ConfigWrapper config)
{
    var credentials = await GetCredentialsAsync(config);

    return new AzureMediaServicesClient(config.ArmEndpoint, credentials)
    {
        SubscriptionId = config.SubscriptionId,
    };
}

Erstellen eines LiveereignissesCreate a live event

In diesem Abschnitt erfahren Sie, wie Sie ein Liveereignis vom Typ Pass-Through erstellen. („LiveEventEncodingType“ ist in diesem Fall auf „None“ festgelegt.)This section shows how to create a pass-through type of Live Event (LiveEventEncodingType set to None). Weitere Informationen zu den verfügbaren Typen von Liveereignissen finden Sie unter Liveereignisse und Liveausgaben.For more information about the available types of Live Events, see Live Event types.

Beim Erstellen des Liveereignisses können Sie folgende Punkte angeben:Some things that you might want to specify when creating the live event are:

  • Den Media Services-Standort.Media Services location.
  • Streamingprotokoll für das Liveereignis (momentan unterstützte Protokolle: RTMP und Smooth Streaming).The streaming protocol for the Live Event (currently, the RTMP and Smooth Streaming protocols are supported).
    Die Protokolloption kann nicht geändert werden, während das Liveereignis oder die zugehörigen Liveausgaben aktiv sind.You can't change the protocol option while the Live Event or its associated Live Outputs are running. Sollten Sie verschiedene Protokolle benötigen, erstellen Sie für jedes Streamingprotokoll ein separates Liveereignis.If you require different protocols, create separate Live Event for each streaming protocol.
  • IP-Einschränkungen für Erfassung und Vorschau.IP restrictions on the ingest and preview. Sie können die IP-Adressen definieren, die ein Video für dieses Liveereignis erfassen dürfen.You can define the IP addresses that are allowed to ingest a video to this Live Event. Zulässige IP-Adressen können als einzelne IP-Adresse (Beispiel: 10.0.0.1), als IP-Adressbereiche mit einer IP-Adresse und einer CIDR-Subnetzmaske (Beispiel: 10.0.0.1/22) oder als IP-Adressbereiche mit einer IP-Adresse und einer Subnetzmaske in Punkt-Dezimalschreibweise (Beispiel: 10.0.0.1(255.255.252.0)) angegeben werden.Allowed IP addresses can be specified as either a single IP address (for example '10.0.0.1'), an IP range using an IP address and a CIDR subnet mask (for example, '10.0.0.1/22'), or an IP range using an IP address and a dotted decimal subnet mask (for example, '10.0.0.1(255.255.252.0)').
    Wenn keine IP-Adressen angegeben sind und es keine Regeldefinition gibt, sind keine IP-Adressen zulässig.If no IP addresses are specified and there's no rule definition, then no IP address will be allowed. Um alle IP-Adressen zuzulassen, erstellen Sie eine Regel und legen 0.0.0.0/0 fest.To allow any IP address, create a rule and set 0.0.0.0/0.
    Die IP-Adressen müssen in einem der folgenden Formate vorliegen: IPv4-Adresse mit vier Ziffern oder CIDR-AdressbereichThe IP addresses have to be in one of the following formats: IpV4 address with four numbers or CIDR address range.
  • Bei der Ereigniserstellung können Sie angeben, dass das Ereignis automatisch gestartet werden soll.When creating the event, you can specify to autostart it.
    Wenn für den automatischen Start „true“ festgelegt ist, wird das Liveereignis nach der Erstellung gestartet.When autostart is set to true, the Live Event will be started after creation. Dies bedeutet, dass die Abrechnung beginnt, sobald das Liveereignis startet.That means the billing starts as soon as the Live Event starts running. Sie müssen für die Liveereignisressource explizit „Beenden“ auswählen, damit keine Gebühren mehr anfallen.You must explicitly call Stop on the Live Event resource to halt further billing. Weitere Informationen finden Sie im Abschnitt LiveEvent-Zustandswerte und Abrechnung.For more information, see Live Event states and billing.
  • Damit eine Erfassungs-URL vorhersagbar ist, legen Sie den Vanitymodus fest.For an ingest URL to be predictive, set the "vanity" mode. Ausführliche Informationen finden Sie unter Erfassungs-URLs für Liveereignisse.For detailed information, see Live Event ingest URLs.
Console.WriteLine($"Creating a live event named {liveEventName}");
Console.WriteLine();

// Note: When creating a LiveEvent, you can specify allowed IP addresses in one of the following formats:                 
//      IpV4 address with 4 numbers
//      CIDR address range

IPRange allAllowIPRange = new IPRange(
    name: "AllowAll",
    address: "0.0.0.0",
    subnetPrefixLength: 0
);

// Create the LiveEvent input IP access control.
LiveEventInputAccessControl liveEventInputAccess = new LiveEventInputAccessControl
{
    Ip = new IPAccessControl(
            allow: new IPRange[]
            {
                allAllowIPRange
            }
        )

};

// Create the LiveEvent Preview IP access control
LiveEventPreview liveEventPreview = new LiveEventPreview
{
    AccessControl = new LiveEventPreviewAccessControl(
        ip: new IPAccessControl(
            allow: new IPRange[]
            {
                allAllowIPRange
            }
        )
    )
};

// To get the same ingest URL for the same LiveEvent name:
// 1. Set vanityUrl to true so you have ingest like: 
//        rtmps://liveevent-hevc12-eventgridmediaservice-usw22.channel.media.azure.net:2935/live/522f9b27dd2d4b26aeb9ef8ab96c5c77           
// 2. Set accessToken to a desired GUID string (with or without hyphen)

LiveEvent liveEvent = new LiveEvent(
    location: mediaService.Location,
    description: "Sample LiveEvent for testing",
    vanityUrl: false,
    encoding: new LiveEventEncoding(
                // When encodingType is None, the service simply passes through the incoming video and audio layer(s) to the output
                // When the encodingType is set to Standard or Premium1080p, a live encoder is used to transcode the incoming stream
                // into multiple bit rates or layers. See https://go.microsoft.com/fwlink/?linkid=2095101 for more information
                encodingType: LiveEventEncodingType.None,
                presetName: null
            ),
    input: new LiveEventInput(LiveEventInputProtocol.RTMP, liveEventInputAccess),
    preview: liveEventPreview,
    streamOptions: new List<StreamOptionsFlag?>()
    {
        // Set this to Default or Low Latency
        // When using Low Latency mode, you must configure the Azure Media Player to use the 
        // quick start hueristic profile or you won't notice the change. 
        // In the AMP player client side JS options, set -  heuristicProfile: "Low Latency Heuristic Profile". 
        // To use low latency optimally, you should tune your encoder settings down to 1 second GOP size instead of 2 seconds.
        StreamOptionsFlag.LowLatency
    }
);

Console.WriteLine($"Creating the LiveEvent, be patient this can take time...");

// When autostart is set to true, the Live Event will be started after creation. 
// That means, the billing starts as soon as the Live Event starts running. 
// You must explicitly call Stop on the Live Event resource to halt further billing.
// The following operation can sometimes take awhile. Be patient.
liveEvent = await client.LiveEvents.CreateAsync(config.ResourceGroup, config.AccountName, liveEventName, liveEvent, autoStart: true);

Abrufen von Erfassungs-URLsGet ingest URLs

Sobald das Liveereignis erstellt wurde, können Sie Erfassungs-URLs abrufen, die Sie dem Liveencoder bereitstellen.Once the Live Event is created, you can get ingest URLs that you'll provide to the live encoder. Diese URLs werden vom Encoder zur Eingabe eines Livedatenstroms verwendet.The encoder uses these URLs to input a live stream.

string ingestUrl = liveEvent.Input.Endpoints.First().Url;
Console.WriteLine($"The ingest url to configure the on premise encoder with is:");
Console.WriteLine($"\t{ingestUrl}");
Console.WriteLine();

Abrufen der Vorschau-URLGet the preview URL

Verwenden Sie den Vorschauendpunkt (previewEndpoint), um eine Vorschau anzuzeigen und sich zu vergewissern, dass die Eingabe des Encoders auch tatsächlich empfangen wird.Use the previewEndpoint to preview and verify that the input from the encoder is actually being received.

Wichtig

Vergewissern Sie sich, dass das Video an die Vorschau-URL übertragen wird, bevor Sie fortfahren.Make sure that the video is flowing to the Preview URL before continuing.

string previewEndpoint = liveEvent.Preview.Endpoints.First().Url;
Console.WriteLine($"The preview url is:");
Console.WriteLine($"\t{previewEndpoint}");
Console.WriteLine();

Console.WriteLine($"Open the live preview in your browser and use the Azure Media Player to monitor the preview playback:");
Console.WriteLine($"\thttps://ampdemo.azureedge.net/?url={previewEndpoint}&heuristicprofile=lowlatency");
Console.WriteLine();

Erstellen und Verwalten von Liveereignissen und LiveausgabenCreate and manage Live Events and Live Outputs

Wenn der Stream an das Liveereignis übertragen wird, können Sie das Streamingereignis starten, indem Sie ein Medienobjekt, eine Liveausgabe und einen Streaminglocator erstellen.Once you have the stream flowing into the Live Event, you can begin the streaming event by creating an Asset, Live Output, and Streaming Locator. Dadurch wird der Datenstrom archiviert und über den Streamingendpunkt für die Zuschauer verfügbar gemacht.This will archive the stream and make it available to viewers through the Streaming Endpoint.

Erstellen eines MedienobjektsCreate an Asset

Erstellen Sie ein Medienobjekt, das von der Liveausgabe verwendet werden kann.Create an Asset for the Live Output to use.

Console.WriteLine($"Creating an asset named {assetName}");
Console.WriteLine();
Asset asset = await client.Assets.CreateOrUpdateAsync(config.ResourceGroup, config.AccountName, assetName, new Asset());

Erstellen einer LiveausgabeCreate a Live Output

Liveausgaben werden bei der Erstellung gestartet und beim Löschen beendet.Live Outputs start on creation and stop when deleted. Wenn Sie die Liveausgabe löschen, werden das zugrunde liegende Medienobjekt und dessen Inhalt nicht gelöscht.When you delete the Live Output, you're not deleting the underlying Asset and content in the asset.

string manifestName = "output";
Console.WriteLine($"Creating a live output named {liveOutputName}");
Console.WriteLine();

LiveOutput liveOutput = new LiveOutput(assetName: asset.Name, manifestName: manifestName, archiveWindowLength: TimeSpan.FromMinutes(10));
liveOutput = await client.LiveOutputs.CreateAsync(config.ResourceGroup, config.AccountName, liveEventName, liveOutputName, liveOutput);

Erstellen eines StreaminglocatorsCreate a Streaming Locator

Hinweis

Beim Erstellen Ihres Media Services-Kontos wird dem Konto ein Standard-Streamingendpunkt im Zustand Beendet hinzugefügt.When your Media Services account is created, a default streaming endpoint is added to your account in the Stopped state. Um mit dem Streamen Ihrer Inhalte zu beginnen und die dynamische Paketerstellung und dynamische Verschlüsselung zu nutzen, muss der Streamingendpunkt, von dem Sie Inhalte streamen möchten, den Zustand Wird ausgeführt aufweisen.To start streaming your content and take advantage of dynamic packaging and dynamic encryption, the streaming endpoint from which you want to stream content has to be in the Running state.

Wenn Sie das Liveausgabe-Medienobjekt mit einem Streaminglocator veröffentlicht haben, ist das Liveereignis (bis zur DVR-Fensterlänge) weiterhin bis zu Ablauf oder Löschung des Streaminglocators sichtbar, je nachdem, was zuerst eintritt.When you publish the Live Output asset using a Streaming Locator, the Live Event (up to the DVR window length) will continue to be viewable until the Streaming Locator's expiry or deletion, whichever comes first.

Console.WriteLine($"Creating a streaming locator named {streamingLocatorName}");
Console.WriteLine();

StreamingLocator locator = new StreamingLocator(assetName: asset.Name, streamingPolicyName: PredefinedStreamingPolicy.ClearStreamingOnly);
locator = await client.StreamingLocators.CreateAsync(config.ResourceGroup, config.AccountName, streamingLocatorName, locator);

// Get the default Streaming Endpoint on the account
StreamingEndpoint streamingEndpoint = await client.StreamingEndpoints.GetAsync(config.ResourceGroup, config.AccountName, streamingEndpointName);

// If it's not running, Start it. 
if (streamingEndpoint.ResourceState != StreamingEndpointResourceState.Running)
{
    Console.WriteLine("Streaming Endpoint was Stopped, restarting now..");
    await client.StreamingEndpoints.StartAsync(config.ResourceGroup, config.AccountName, streamingEndpointName);
}

// Get the url to stream the output
ListPathsResponse paths = await client.StreamingLocators.ListPathsAsync(resourceGroupName, accountName, locatorName);

foreach (StreamingPath path in paths.StreamingPaths)
{
    UriBuilder uriBuilder = new UriBuilder();
    uriBuilder.Scheme = "https";
    uriBuilder.Host = streamingEndpoint.HostName;

    uriBuilder.Path = path.Paths[0];
    // Get the URL from the uriBuilder: uriBuilder.ToString()
}

Bereinigen der Ressourcen in Ihrem Media Services-KontoCleaning up resources in your Media Services account

Wenn die Streamingereignisse abgeschlossen sind und Sie die zuvor bereitgestellten Ressourcen bereinigen möchten, führen Sie die folgenden Schritte aus:If you're done streaming events and want to clean up the resources provisioned earlier, follow the following procedure:

  • Beenden Sie die Datenstromeingabe vom Encoder.Stop pushing the stream from the encoder.
  • Beenden Sie das Liveereignis.Stop the Live Event. Nach Beendigung des Liveereignisses fallen keine weiteren Kosten an.Once the Live Event is stopped, it won't incur any charges. Wenn Sie den Kanal erneut starten, weist er die gleiche Erfassungs-URL auf, damit Sie den Encoder nicht erneut konfigurieren müssen.When you need to start it again, it will have the same ingest URL so you won't need to reconfigure your encoder.
  • Sie können Ihren Streamingendpunkt beenden, sofern Sie das Archiv Ihres Liveereignisses nicht als bedarfsgesteuerten Datenstrom bereitstellen möchten.You can stop your Streaming Endpoint, unless you want to continue to provide the archive of your live event as an on-demand stream. Wenn sich das Liveereignis im Zustand „Beendet“ befindet, fallen keine weiteren Kosten an.If the Live Event is in a stopped state, it won't incur any charges.
private static async Task CleanupLiveEventAndOutputAsync(IAzureMediaServicesClient client, string resourceGroup, string accountName, string liveEventName)
{
    try
    {
        LiveEvent liveEvent = await client.LiveEvents.GetAsync(resourceGroup, accountName, liveEventName);

        if (liveEvent != null)
        {
            if (liveEvent.ResourceState == LiveEventResourceState.Running)
            {
                // If the LiveEvent is running, stop it and have it remove any LiveOutputs
                await client.LiveEvents.StopAsync(resourceGroup, accountName, liveEventName, removeOutputsOnStop: true);
            }

            // Delete the LiveEvent
            await client.LiveEvents.DeleteAsync(resourceGroup, accountName, liveEventName);
        }
    }
    catch (ApiErrorException e)
    {
        Console.WriteLine("CleanupLiveEventAndOutputAsync -- Hit ApiErrorException");
        Console.WriteLine($"\tCode: {e.Body.Error.Code}");
        Console.WriteLine($"\tCode: {e.Body.Error.Message}");
        Console.WriteLine();
    }
}
private static async Task CleanupLocatorandAssetAsync(IAzureMediaServicesClient client, string resourceGroup, string accountName, string streamingLocatorName, string assetName)
{
    try
    {
        // Delete the Streaming Locator
        await client.StreamingLocators.DeleteAsync(resourceGroup, accountName, streamingLocatorName);

        // Delete the Archive Asset
        await client.Assets.DeleteAsync(resourceGroup, accountName, assetName);
    }
    catch (ApiErrorException e)
    {
        Console.WriteLine("CleanupLocatorandAssetAsync -- Hit ApiErrorException");
        Console.WriteLine($"\tCode: {e.Body.Error.Code}");
        Console.WriteLine($"\tCode: {e.Body.Error.Message}");
        Console.WriteLine();
    }
}

Ansehen des EreignissesWatch the event

Kopieren Sie zur Wiedergabe des Ereignisses die Streaming-URL, die Sie beim Ausführen des Codes in „Erstellen eines Streaminglocators“ erhalten haben.To watch the event, copy the streaming URL that you got when you ran code described in Create a Streaming Locator. Sie können einen Medienplayer Ihrer Wahl verwenden.You can use a media player of your choice. Um Ihren Stream zu testen, können Sie den Azure Media Player unter https://ampdemo.azureedge.net verwenden.Azure Media Player is available to test your stream at https://ampdemo.azureedge.net.

Das Liveereignis konvertiert Ereignisse automatisch in On-Demand-Inhalt, wenn es beendet wird.Live Event automatically converts events to on-demand content when stopped. Auch nach dem Beenden und Löschen des Ereignisses können die Benutzer archivierte Inhalte als Video auf Abruf streamen, solange Sie das Medienobjekt nicht löschen.Even after you stop and delete the event, users can stream your archived content as a video on demand for as long as you don't delete the asset. Ein Medienobjekt kann nicht gelöscht werden, wenn es von einem Ereignis verwendet wird. Zuerst muss das betreffende Ereignis gelöscht werden.An asset can't be deleted if it's used by an event; the event must be deleted first.

Bereinigen von RessourcenClean up resources

Wenn Sie keine Ressourcen in Ihrer Ressourcengruppe mehr benötigen, einschließlich der Media Services und Speicherkonten, die Sie für dieses Tutorial erstellt haben, löschen Sie die zuvor erstellte Ressourcengruppe.If you no longer need any of the resources in your resource group, including the Media Services and storage accounts you created for this tutorial, delete the resource group you created earlier.

Führen Sie den folgenden CLI-Befehl aus:Execute the following CLI command:

az group delete --name amsResourceGroup

Wichtig

Wenn Sie das Liveereignis nicht beenden, fallen weiter Kosten dafür an.Leaving the Live Event running incurs billing costs. Falls das Projekt/Programm abstürzt oder aus einem anderen Grund geschlossen wird, bleibt das Liveereignis unter Umständen aktiv und verursacht weitere Kosten.Be aware, if the project/program crashes or is closed out for any reason, it could leave the Live Event running in a billing state.

Fragen stellen, Feedback geben, Updates abrufenAsk questions, give feedback, get updates

Im Artikel Azure Media Services-Community finden Sie verschiedene Möglichkeiten, Fragen zu stellen, Feedback zu geben und Updates zu Media Services zu bekommen.Check out the Azure Media Services community article to see different ways you can ask questions, give feedback, and get updates about Media Services.

Nächste SchritteNext steps

Streamen von DateienStream files