Öğretici: URL'ye göre uzak bir dosyayı kodlama ve video akışı - Azure CLI

Media Services logosu v3


Uyarı

Azure Media Services 30 Haziran 2024'de kullanımdan kaldırılacaktır. Daha fazla bilgi için bkz. AMS Kullanımdan Kaldırma Kılavuzu.

Bu öğreticide, Azure Media Services ve Azure CLI kullanarak çeşitli tarayıcılarda ve cihazlarda videoları kolayca kodlama ve akışla kaydetme adımları gösterilmektedir. Giriş içeriğini HTTPS veya SAS URL'lerini veya Azure Blob depolamadaki dosyaların yollarını kullanarak belirtebilirsiniz.

Bu makaledeki örnek, HTTPS URL'si aracılığıyla erişilebilir hale getirdiğiniz içeriği kodlar. Media Services v3 şu anda HTTPS URL'leri üzerinden öbekli aktarım kodlamayı desteklemez.

Bu öğreticinin sonunda video akışı yapabileceksiniz.

Videoyu yürütme

Media Services hesabı oluşturma

Azure'da medya içeriğini şifrelemek, kodlamak, çözümlemek, yönetmek ve akışla aktarmak için bir Media Services hesabı oluşturmanız gerekir. Bu hesabın bir veya daha fazla depolama hesabıyla ilişkilendirilmesi gerekir.

Media Services hesabınız ve ilişkili tüm depolama hesaplarınız aynı Azure aboneliğinde olmalıdır. Gecikme süresini ve veri çıkış maliyetlerini sınırlamak için Media Services hesabıyla aynı yerde bulunan depolama hesaplarını kullanmanızı öneririz.

Kaynak grubu oluşturma

az group create -n amsResourceGroup -l westus2

Azure depolama hesabı oluşturma

Bu örnekte bir General-Purpose v2 Standart LRS hesabı oluşturacağız.

Depolama hesaplarıyla denemeler yapmak istiyorsanız kullanın --sku Standard_LRS. Üretim için bir SKU seçerken, iş sürekliliği için coğrafi çoğaltma sağlayan 'ı kullanmayı --sku Standard_RAGRSgöz önünde bulundurun. Daha fazla bilgi için bkz. depolama hesapları.

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

Azure Media Services hesabı oluşturma

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

Akış uç noktasını başlatma

Aşağıdaki Azure CLI komutu varsayılan Akış Uç Noktasını başlatır.

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

Akış uç noktası zaten çalışıyorsa şu iletiyi alırsınız:

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

Bit hızı uyarlamalı kodlama için dönüşüm oluşturma

Videoları kodlamaya veya analiz etmeye yönelik yaygın görevleri yapılandırmak için bir Dönüşüm oluşturun. Bu örnekte bit hızı uyarlamalı kodlama yapıyoruz. Ardından oluşturduğumuz dönüşüm altında bir iş göndeririz. İş, dönüştürmeyi verilen video veya ses içeriği girişine uygulamak için Media Services'e yapılan istektir.

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

Çıktı varlığı oluşturma

Kodlama işinin çıktısı olarak kullanılacak bir çıkış Varlığı oluşturun.

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

HTTPS girişini kullanarak iş başlatma

Videoları işlemek için iş gönderdiğinizde, Media Services'e giriş videosunu nerede bulacağını söylemeniz gerekir. Bir seçenek, bu örnekte gösterildiği gibi iş girişi olarak bir HTTPS URL'si belirtmektir.

komutunu çalıştırdığınızda az ams job start, işin çıkışında bir etiket ayarlayabilirsiniz. Ardından etiketi kullanarak çıkış varlığının ne için olduğunu belirleyebilirsiniz.

  • Etikete bir değer atarsanız , '--output-assets' değerini "assetname=label" olarak ayarlayın.

  • Etikete değer atamazsanız , '--output-assets' değerini "assetname=" olarak ayarlayın.

    öğesine "=" eklediğimize output-assetsdikkat edin.

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

Durumu kontrol etme

Beş dakika içinde işin durumunu denetleyin. "Bitti" olmalıdır. Henüz bitmedi, birkaç dakika içinde yeniden kontrol edin. tamamlandığında bir sonraki adıma geçin ve bir Akış Bulucu oluşturun.

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

Akış bulucu oluşturma ve yol alma

Kodlama tamamlandıktan sonra, bir sonraki adım çıkış varlığındaki videoyu istemcilerin kayıttan yürütme için kullanılabilir hale getirmektir. Bunu yapmak için önce bir Akış Bulucu oluşturun. Ardından istemcilerin kullanabileceği akış URL'leri oluşturun.

Akış bulucusu oluşturma

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
}

Akış bulucu yollarını alma

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

Şuna benzer bir yanıt alırsınız:

{
  "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"
    }
  ]
}

HTTP canlı akış (HLS) yolunu kopyalayın. Bu durumda, şeklindedir /e01b2be1-5ea4-42ca-ae5d-7fe704a5962f/ignite.ism/manifest(format=m3u8-aapl).

URL'yi oluşturma

Akış uç noktası ana bilgisayar adını alma

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

hostName Değeri kopyalayın. Bu durumda, şeklindedir amsaccount-usw22.streaming.media.azure.net.

URL'yi derleme

"https:// " + <hostName değeri> + <Hls yol değeri>

Aşağıda bir örnek verilmiştir:

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

Azure Media Player kullanarak kayıttan yürütmeyi test etme

Not

Bir oynatıcı bir HTTPS sitesinde barındırılıyorsa URL'yi "https" ile başlattığınızdan emin olun.

  1. Bir web tarayıcısı açın ve adresine https://aka.ms/azuremediaplayer/gidin.
  2. URL kutusuna, önceki bölümde oluşturduğunuz URL'yi yapıştırın. URL'yi HLS, Tire veya Düzleştirme biçiminde yapıştırabilirsiniz. Azure Media Player, cihazınızda kayıttan yürütme için otomatik olarak uygun bir akış protokolü kullanır.
  3. Oynatıcıyı Güncelleştir'i seçin.

Not

Azure Media Player, test için kullanılabilir, ancak üretim ortamında kullanılmamalıdır.

Kaynakları temizleme

Bu öğretici için oluşturduğunuz Media Services ve depolama hesapları da dahil olmak üzere kaynak grubunuzdaki kaynaklardan herhangi birine artık ihtiyacınız yoksa kaynak grubunu silin.

Şu Azure CLI komutunu çalıştırın:

az group delete --name amsResourceGroup

Yardım ve destek alma

Aşağıdaki yöntemlerden birini kullanarak Media Services ile iletişime geçebilir veya güncelleştirmelerimizi izleyebilirsiniz: