Tutorial: Codieren einer Remotedatei anhand einer URL und Streamen des Videos – Azure CLI

media services logo v3


Sie suchen nach der Dokumentation zu Azure Media Services v2?

In diesem Tutorial wird veranschaulicht, wie Sie Videos auf einfache Weise mit vielen Browsern und Geräten codieren und streamen können, indem Sie Azure Media Services und die Azure CLI verwenden. Sie können eingegebenen Inhalt angeben, indem Sie HTTPS- oder SAS-URLs oder Pfade zu Dateien in Azure-Blobspeicher verwenden.

Im Beispiel in diesem Artikel werden Inhalte codiert, die Sie über eine HTTPS-URL zugänglich machen. Media Services v3 unterstützt derzeit keine segmentierte Transfercodierung über HTTPS-URLs.

Am Ende dieses Tutorials sind Sie in der Lage, ein Video zu streamen.

Play the video

Erstellen eines Media Services-Kontos

Bevor Sie Medieninhalte in Azure verschlüsseln, codieren, analysieren, verwalten und streamen können, müssen Sie ein Media Services-Konto erstellen. Dieses Konto muss mindestens einem Speicherkonto zugeordnet sein.

Ihr Media Services-Konto und alle zugeordneten Speicherkonten müssen unter demselben Azure-Abonnement vorhanden sein. Es wird empfohlen, Speicherkonten zu verwenden, die sich an demselben Ort wie das Media Services-Konto befinden, um die Latenz und den Aufwand in Bezug auf ausgehenden Datenverkehr zu verringern.

Erstellen einer Ressourcengruppe

az group create -n amsResourceGroup -l westus2

Erstellen eines Azure-Speicherkontos

In diesem Beispiel erstellen Sie ein universelles LRS-Standardkonto der Version 2.

Falls Sie mit Speicherkonten experimentieren möchten, verwenden Sie --sku Standard_LRS. Wenn Sie eine SKU für die Produktion auswählen, sollten Sie die Verwendung von --sku Standard_RAGRS erwägen, da diese Option die geografische Replikation zum Gewährleisten der Geschäftskontinuität ermöglicht. Weitere Informationen finden Sie unter Storage accounts (Speicherkonten).

az storage account create -n amsstorageaccount --kind StorageV2 --sku Standard_LRS -l westus2 -g amsResourceGroup

Erstellen eines Azure Media Services-Kontos

az ams account create --n amsaccount -g amsResourceGroup --storage-account amsstorageaccount -l westus2

Sie erhalten in etwa folgende Antwort:

{
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount",
  "location": "West US 2",
  "mediaServiceId": "8b569c2e-d648-4fcb-9035-c7fcc3aa7ddf",
  "name": "amsaccount",
  "resourceGroup": "amsResourceGroupTest",
  "storageAccounts": [
    {
      "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Storage/storageAccounts/amsstorageaccount",
      "resourceGroup": "amsResourceGroupTest",
      "type": "Primary"
    }
  ],
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Starten des Streamingendpunkts

Mit dem folgenden Azure CLI-Befehl wird der standardmäßige Streamingendpunkt gestartet.

az ams streaming-endpoint start  -n default -a amsaccount -g amsResourceGroup

Sie erhalten in etwa folgende Antwort:

{
  "accessControl": null,
  "availabilitySetName": null,
  "cdnEnabled": true,
  "cdnProfile": "AzureMediaStreamingPlatformCdnProfile-StandardVerizon",
  "cdnProvider": "StandardVerizon",
  "created": "2019-02-06T21:58:03.604954+00:00",
  "crossSiteAccessPolicies": null,
  "customHostNames": [],
  "description": "",
  "freeTrialEndTime": "2019-02-21T22:05:31.277936+00:00",
  "hostName": "amsaccount-usw22.streaming.media.azure.net",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/streamingendpoints/default",
  "lastModified": "2019-02-06T21:58:03.604954+00:00",
  "location": "West US 2",
  "maxCacheAge": null,
  "name": "default",
  "provisioningState": "Succeeded",
  "resourceGroup": "amsResourceGroup",
  "resourceState": "Running",
  "scaleUnits": 0,
  "tags": {},
  "type": "Microsoft.Media/mediaservices/streamingEndpoints"
}

Wenn der Streamingendpunkt bereits ausgeführt wird, erhalten Sie diese Meldung:

(InvalidOperation) The server cannot execute the operation in its current state.

Erstellen einer Transformation für die Adaptive Bitrate-Codierung

Erstellen Sie eine Transformation, um allgemeine Aufgaben für die Codierung oder Analyse von Videos zu konfigurieren. In diesem Beispiel führen wir eine Adaptive Bitrate-Codierung durch. Wir übermitteln dann einen Auftrag unter der von uns erstellten Transformation. Der Auftrag ist die Anforderung an Media Services, die Transformation auf das jeweilige Video oder auf eingegebene Audioinhalte anzuwenden.

az ams transform create --name testEncodingTransform --preset AdaptiveStreaming --description 'a simple Transform for Adaptive Bitrate Encoding' -g amsResourceGroup -a amsaccount

Sie erhalten in etwa folgende Antwort:

{
  "created": "2019-02-15T00:11:18.506019+00:00",
  "description": "a simple Transform for Adaptive Bitrate Encoding",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/transforms/testEncodingTransform",
  "lastModified": "2019-02-15T00:11:18.506019+00:00",
  "name": "testEncodingTransform",
  "outputs": [
    {
      "onError": "StopProcessingJob",
      "preset": {
        "odatatype": "#Microsoft.Media.BuiltInStandardEncoderPreset",
        "presetName": "AdaptiveStreaming"
      },
      "relativePriority": "Normal"
    }
  ],
  "resourceGroup": "amsResourceGroup",
  "type": "Microsoft.Media/mediaservices/transforms"
}

Erstellen eines Ausgabemedienobjekts

Erstellen Sie ein Medienobjekt vom Typ „Ausgabe“, das als Ausgabe des Codierauftrags verwendet wird.

az ams asset create -n testOutputAssetName -a amsaccount -g amsResourceGroup

Sie erhalten in etwa folgende Antwort:

{
  "alternateId": null,
  "assetId": "96427438-bbce-4a74-ba91-e38179b72f36",
  "container": null,
  "created": "2019-02-14T23:58:19.127000+00:00",
  "description": null,
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/assets/testOutputAssetName",
  "lastModified": "2019-02-14T23:58:19.127000+00:00",
  "name": "testOutputAssetName",
  "resourceGroup": "amsResourceGroup",
  "storageAccountName": "amsstorageaccount",
  "storageEncryptionFormat": "None",
  "type": "Microsoft.Media/mediaservices/assets"
}

Starten eines Auftrags per HTTPS-Eingabe

Wenn Sie Aufträge zur Verarbeitung von Videos übermitteln, müssen Sie Media Services mitteilen, wo sich das Eingabevideo befindet. Eine Option ist die Angabe einer HTTPS-URL als Auftragseingabe, wie im folgenden Beispiel gezeigt.

Beim Ausführen von az ams job start können Sie eine Bezeichnung für die Ausgabe des Auftrags festlegen. Sie können die Bezeichnung dann verwenden, um anzugeben, wofür das Ausgabemedienobjekt bestimmt ist.

  • Wenn Sie der Bezeichnung einen Wert zuweisen, legen Sie „--output-assets“ auf „assetname=label“ fest.

  • Wenn Sie der Bezeichnung keinen Wert zuweisen, legen Sie „--output-assets“ auf „assetname=“ fest.

    Beachten Sie, dass wir output-assets den Zusatz „=“ hinzufügen.

az ams job start --name testJob001 --transform-name testEncodingTransform --base-uri 'https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/' --files 'Ignite-short.mp4' --output-assets testOutputAssetName= -a amsaccount -g amsResourceGroup

Sie erhalten in etwa folgende Antwort:

{
  "correlationData": {},
  "created": "2019-02-15T05:08:26.266104+00:00",
  "description": null,
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/transforms/testEncodingTransform/jobs/testJob001",
  "input": {
    "baseUri": "https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/",
    "files": [
      "Ignite-short.mp4"
    ],
    "label": null,
    "odatatype": "#Microsoft.Media.JobInputHttp"
  },
  "lastModified": "2019-02-15T05:08:26.266104+00:00",
  "name": "testJob001",
  "outputs": [
    {
      "assetName": "testOutputAssetName",
      "error": null,
      "label": "",
      "odatatype": "#Microsoft.Media.JobOutputAsset",
      "progress": 0,
      "state": "Queued"
    }
  ],
  "priority": "Normal",
  "resourceGroup": "amsResourceGroup",
  "state": "Queued",
  "type": "Microsoft.Media/mediaservices/transforms/jobs"
}

Status überprüfen

Überprüfen Sie nach fünf Minuten den Status des Auftrags. Er sollte "Finished" (Fertig) sein. Sollte er nicht abgeschlossen sein, sehen Sie in einigen Minuten erneut nach. Fahren Sie mit dem nächsten Schritt fort, sobald der Status „Beendet“ angezeigt wird, und erstellen Sie einen Streaminglocator.

az ams job show -a amsaccount -g amsResourceGroup -t testEncodingTransform -n testJob001

Erstellen eines Streaminglocators und Abrufen eines Pfads

Nachdem die Codierung abgeschlossen ist, besteht der nächste Schritt darin, das Video im Ausgabeobjekt für Clients zur Wiedergabe verfügbar zu machen. Erstellen Sie hierzu zunächst einen Streaminglocator. Erstellen Sie anschließend Streaming-URLs, die von Clients verwendet werden können.

Erstellen Sie eines Streaminglocators

az ams streaming-locator create -n testStreamingLocator --asset-name testOutputAssetName --streaming-policy-name Predefined_ClearStreamingOnly  -g amsResourceGroup -a amsaccount

Sie erhalten in etwa folgende Antwort:

{
  "alternativeMediaId": null,
  "assetName": "output-3b6d7b1dffe9419fa104b952f7f6ab76",
  "contentKeys": [],
  "created": "2019-02-15T04:35:46.270750+00:00",
  "defaultContentKeyPolicyName": null,
  "endTime": "9999-12-31T23:59:59.999999+00:00",
  "id": "/subscriptions/<id>/resourceGroups/amsResourceGroup/providers/Microsoft.Media/mediaservices/amsaccount/streamingLocators/testStreamingLocator",
  "name": "testStreamingLocator",
  "resourceGroup": "amsResourceGroup",
  "startTime": null,
  "streamingLocatorId": "e01b2be1-5ea4-42ca-ae5d-7fe704a5962f",
  "streamingPolicyName": "Predefined_ClearStreamingOnly",
  "type": "Microsoft.Media/mediaservices/streamingLocators"
}

Abrufen der Streaminglocatorpfade

az ams streaming-locator get-paths -a amsaccount -g amsResourceGroup -n testStreamingLocator

Sie erhalten in etwa folgende Antwort:

{
  "downloadPaths": [],
  "streamingPaths": [
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=m3u8-aapl)"
      ],
      "streamingProtocol": "Hls"
    },
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=mpd-time-csf)"
      ],
      "streamingProtocol": "Dash"
    },
    {
      "encryptionScheme": "NoEncryption",
      "paths": [
        "/e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest"
      ],
      "streamingProtocol": "SmoothStreaming"
    }
  ]
}

Kopieren Sie den Pfad für das HTTP-Livestreaming (HLS). In diesem Fall ist dies /e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=m3u8-aapl).

Erstellen der URL

Abrufen des Hostnamens für den Streamingendpunkt

az ams streaming-endpoint list -a amsaccount -g amsResourceGroup -n default

Kopieren Sie den hostName-Wert. In diesem Fall ist dies amsaccount-usw22.streaming.media.azure.net.

Zusammensetzen der URL

„https://“ + <hostName-Wert> + <Hls-Pfad-Wert>

Hier sehen Sie ein Beispiel:

https://amsaccount-usw22.streaming.media.azure.net/7f19e783-927b-4e0a-a1c0-8a140c49856c/ignite.ism/manifest(format=m3u8-aapl)

Testen der Wiedergabe mit Azure Media Player

Hinweis

Wenn ein Player auf einer HTTPS-Website gehostet wird, sollten Sie sicherstellen, dass die URL mit „https“ beginnt.

  1. Öffnen Sie einen Webbrowser, und navigieren Sie zu https://aka.ms/azuremediaplayer/.
  2. Fügen Sie die URL, die Sie im vorherigen Abschnitt erstellt haben, in das Feld URL ein. Sie können die URL im Format HLS, Dash oder Smooth einfügen. Für Azure Media Player wird automatisch ein entsprechendes Streamingprotokoll für die Wiedergabe auf Ihrem Gerät verwendet.
  3. Wählen Sie Player aktualisieren.

Hinweis

Azure Media Player kann zum Testen verwendet werden, sollte jedoch nicht in einer Produktionsumgebung zum Einsatz kommen.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen in der Ressourcengruppe einschließlich der in diesem Tutorial erstellten Media Services- und Speicherkonten nicht mehr benötigen, löschen Sie die Ressourcengruppe.

Führen Sie dann den folgenden Azure CLI-Befehl aus:

az group delete --name amsResourceGroup