Exemplarische Vorgehensweise: Dynamische Paketerstellung von Medienobjekten
Windows Azure Media Services kann zum Bereitstellen einer Vielzahl von Medien-Quelldateiformaten, Medienstreamingformaten und Inhaltsschutzformaten für zahlreiche Clienttechnologien (z. B. iOS, XBOX, Silverlight, Windows 8) verwendet werden. Diese Clients verstehen verschiedene Protokolle. iOS erfordert z. B. das Format HLS (HTTP Live Streaming) V4, Silverlight und Xbox erfordern Smooth Streaming. Wenn Sie eine Sammlung von MP4-Dateien mit mehreren Bitraten (ISO Base Media 14496-12) oder Smooth Streaming-Dateien besitzen, die Sie auf Clients bereitstellen möchten, die HLS oder Smooth Streaming verarbeiten können, sollten Sie die dynamische Media Services-Paketerstellung nutzen.
Bei der dynamischen Paketerstellung müssen Sie nur ein Medienobjekt erstellen, das eine Sammlung aus MP4-Dateien mit mehreren Bitraten oder Smooth Streaming-Quelldateien mit mehreren Bitraten enthält. Basierend auf dem angegebenen Format im Manifest oder in der Fragmentanforderung stellt der Streamingserver on Demand dann sicher, dass Sie den Datenstrom im ausgewählten Protokoll empfangen. Daher müssen Sie die Dateien nur in einem Speicherformat speichern, und es fallen nur Kosten für ein Speicherformat an. Der Media Services-Dienst erstellt und verarbeitet die entsprechende Antwort basierend auf Anforderungen von einem Client.
Hinweis |
|---|
| Zurzeit unterstützt die dynamische Paketerstellung nur unverschlüsselte Quelldateien und generiert unverschlüsselte Ausgabedatenströme. |
Hinweis |
|---|
| Damit Sie dynamische Paketerstellung nutzen können, müssen Sie zuerst reservierte Streamingeinheiten on Demand abrufen. Weitere Informationen finden Sie unter Skalieren eines Mediendiensts. |
Dieser Assistent stellt Ihnen die folgenden Schritte vor:
-
preparing an asset for dynamic packaging and
-
requesting a locator and composing the streaming URLs for Smooth Streaming and HLS.
Sie können das Codebeispiel hier herunterladen: Beispiel für die dynamische Paketerstellung von Medienobjekten
Einrichten Ihres Projekts
Informationen zum Einrichten Ihres Projekts finden Sie in den folgenden Themen:
Installation für die Entwicklung mit dem Media Services SDK für .NET
Herstellen einer Verbindung mit Media Services mithilfe des Media Services SDKs
Vorbereiten von Medienobjekten für dynamisches Streaming
Für das Vorbereiten Ihres Medienobjekts für dynamisches Streaming sind zwei Optionen verfügbar, die in diesem Abschnitt beschrieben werden.
Hinweis |
|---|
| Nicht alle MP4-Dateiformate werden von der dynamischen Paketerstellung unterstützt. Weitere Informationen finden Sie unter Nicht unterstützte Formate für die dynamische Paketerstellung. |
Hochladen einer Masterdatei und Generieren von adaptiven H.264 MP4-Bitratensammlungen mithilfe von Windows Azure Media Encoder
Führen Sie mit dieser Option die folgenden Schritte aus:
-
Hochladen einer einzelnen Datei.
-
Ausführen eines Codierungsauftrags zum Generieren einer adaptiven H.264 MP4-Bitratensammlung. Die folgende Methode
CreateEncodingJobnimmt dasasset-Objekt, das vonCreateAssetAndUploadSingleFileerstellt wurde, als Parameter an. Weitere Informationen zu anderen vordefinierten Codierungszeichenfolgen finden Sie unter Zeichenfolgen für vordefinierte Einstellungen für Aufgaben für Windows Azure Media Encoder.
Die Methode CreateEncodingJob führt Aufrufe für einige Hilfsmethoden aus, die im Thema Verarbeiten von Medienobjekten erläutert werden.
Das Medienobjekt, das die Quelldateien enthält, muss außerdem ein Servermanifest (ISM-Datei) enthalten, das die Beziehungen zwischen Medientiteln, Bitraten und Dateien auf dem Datenträger beschreibt. Wenn Sie Windows Azure Media Encoder verwenden, wird die Manifestdatei für Sie generiert.static IJob CreateEncodingJob(IAsset asset) { // Declare a new job. IJob job = _context.Jobs.Create("My encoding job"); // Get a media processor reference IMediaProcessor processor = GetLatestMediaProcessorByName("Windows Azure Media Encoder"); // Create a task with the encoding details, using a string preset. ITask task = job.Tasks.AddNew("My encoding task", processor, "H264 Adaptive Bitrate MP4 Set 720p", _protectedConfig); // Specify the input asset to be encoded. task.InputAssets.Add(asset); // Add an output asset to contain the results of the job. // This output is specified as AssetCreationOptions.None, which // means the output asset is in the clear (unencrypted). task.OutputAssets.AddNew("Output asset", AssetCreationOptions.None); // Use the following event handler to check job progress. job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged); // Launch the job. job.Submit(); // Optionally log job details. This displays basic job details // to the console and saves them to a JobDetails-{JobId}.txt file // in your output folder. LogJobDetails(job.Id); // Check job execution and wait for job to finish. Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None); progressJobTask.Wait(); // Get an updated job reference. job = GetJob(job.Id); return job; }
Hochladen vorhandener adaptiver Bitratensammlungen und Überprüfen dieser mithilfe von Media Packager
Mit dieser Option führen Sie normalerweise die folgenden Schritte aus:
-
Hochladen mehrerer Dateien aus einem lokalen Verzeichnis.
Wenn Sie planen, Ihre Dateien mit Windows Azure Media Packager (wird im nächsten Schritt beschrieben) zu überprüfen, müssen Sie Ihre eigene Manifestdatei (ISM-Datei) erstellen und diese dann zusammen mit den Quelldateien in das Media Services-Konto hochladen. Nachstehend finden Sie ein Beispiel für die ISM-Datei, die von Windows Azure Media Encoder generiert wird.
Warnung Stellen Sie sicher, dass der Text in der ISM-Datei UTF-8-codiert ist. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <smil xmlns="http://www.w3.org/2001/SMIL20/Language"> <head> <!-- Tells the server that these input files are MP4s – specific to Dynamic Packaging --> <meta name="formats" content="mp4" /> </head> <body> <switch> <video src="BigBuckBunny_1000.mp4" /> <video src="BigBuckBunny_1500.mp4" /> <video src="BigBuckBunny_2250.mp4" /> <video src="BigBuckBunny_3400.mp4" /> <video src="BigBuckBunny_400.mp4" /> <video src="BigBuckBunny_650.mp4" /> <audio src="BigBuckBunny_400.mp4" /> </switch> </body> </smil> -
Führen Sie Media Packager mit der "MP4-Überprüfungsaufgabe" aus, um das Medienobjekt zu überprüfen, das in Media Services hochgeladen wurde.
Sie müssen eine XML-Konfigurationszeichenfolge übergeben, wenn Sie eine Überprüfungsaufgabe erstellen. In diesem Beispiel wird die Datei MediaPackager_ValidateTask.xml verwendet. Diese Datei wird im Thema Vordefinierte Einstellungen für Aufgaben für Windows Azure Media Packager beschrieben.
Die Methode ValidateMP4Asset führt Aufrufe für einige Hilfsmethoden aus, die im Thema Verarbeiten von Medienobjekten erläutert werden.
private static IJob ValidateMP4Asset(IAsset asset, string configFilePath) { SetISMFileAsPrimary(asset); // Declare a new job to contain the tasks. IJob job = _context.Jobs.Create("MP4 validation job."); // Set up the first task. // Read the task configuration data into a string. string configMp4Validation = File.ReadAllText(Path.GetFullPath(configFilePath + @"\MediaPackager_ValidateTask.xml")); // Get a media processor reference, and pass to it the name of the // processor to use for the specific task. IMediaProcessor processor = GetLatestMediaProcessorByName("Windows Azure Media Packager"); // Create a task with the conversion details, using the configuration data. ITask task = job.Tasks.AddNew("Mp4 Validation Task", processor, configMp4Validation, _clearConfig); // specify the input asset to be validated. task.InputAssets.Add(asset); // Add an output asset to contain the results of the job. // This output is specified as AssetCreationOptions.None, which // means the output asset is in the clear (unencrypted). task.OutputAssets.AddNew("Output asset", AssetCreationOptions.None); // Use the following event handler to check job progress. job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged); // Launch the job. job.Submit(); // Optionally log job details LogJobDetails(job.Id); // Check job execution and wait for job to finish. Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None); progressJobTask.Wait(); // Get an updated job reference. job = GetJob(job.Id); return job; } static void SetISMFileAsPrimary(IAsset asset) { var ismAssetFiles = asset.AssetFiles.ToList(). Where(f => f.Name.EndsWith(".ism", StringComparison.OrdinalIgnoreCase)).ToArray(); if (ismAssetFiles.Count() != 1) throw new ArgumentException("The asset should have only one, .ism file"); ismAssetFiles.First().IsPrimary = true; ismAssetFiles.First().Update(); }
Warnung |
|---|
| Wenn der Streamingserver on Demand nicht in der Lage ist, Ihre Quelldateien zur Laufzeit zu analysieren, erhalten Sie den HTTP 1.1-Fehler "415 Nicht unterstützter Medientyp". Wenn der Server wiederholt Ihre Quelldateien nicht analysieren kann, wirkt sich dies auf die Leistung des Streamingservers on Demand aus, und ggf. wird die Bandbreite verringert, die für andere Anforderungen verfügbar ist. Windows Azure Media Services bietet eine Vereinbarung zum Servicelevel (SLA) für Streamingdienste on Demand. Diese SLA kann jedoch nicht erfüllt werden, wenn der Server auf die oben beschriebene Weise missbraucht wird. Verwenden Sie Windows Azure Media Encoder für die Generierung bzw. Windows Azure Media Packager zum Überprüfen Ihrer Inhalte, um Laufzeitprobleme zu vermeiden. |
Streamen von Inhalten
Sobald die adaptiven Bitratensammlungen auf dem Windows Azure Media-Streamingserver on Demand gespeichert wurden, können Sie einen Locator anfordern und die Streaming-URLs für Smooth Streaming und HLS generieren.
Damit die Inhalte von einem Client gestreamt werden können, müssen Sie einen Ursprungslocator anfordern und dann ein geeignetes Format an den Pfad des Ursprungslocators anfügen. Wenn ein Client das Smooth Streaming-Format erfordert, fügen Sie file.ism/Manifest an den Locatorpfad an. Wenn ein Client HLS erfordert, fügen Sie file.ism/Manifest(format=m3u8-aapl) an den Locatorpfad an. Beispiel:
http://server.cloudapp.net/locator_guid/file.ism/Manifest http://server.cloudapp.net/locator_guid/file.ism/Manifest(format=m3u8-aapl)
Weitere Informationen zum Streamen der Inhalte finden Sie unter: Erstellen eines Locators und Generieren von URLs und Einfache Speicherung und Streaming mit Transform Manager:
Nicht unterstützte Formate für die dynamische Paketerstellung
Die folgenden Quelldateiformate werden von der dynamischen Paketerstellung nicht unterstützt.
-
Quelldateien, die die folgenden Codecs enthalten:
-
Dolby Digital Plus MP4-Dateien.
-
Dolby Digital Plus Smooth-Dateien.
Hinweis Diese Codecs werden in Windows Azure Media Packager unterstützt. -
Dolby Digital Plus MP4-Dateien.
-
Geschützter Inhalt:
-
Speicherverschlüsselt
-
PlayReady Protected Smooth Streaming
-
AES-128 CBC Protected HLS
Hinweis Diese Codecs werden in Windows Azure Media Encryptor und Windows Azure Media Packager unterstützt. -
Speicherverschlüsselt
-
HLS-Quellen:
-
PlayReady Protected HLS
-
IIS MS HLS-Archive
-
IIS MS HLS-Präsentationen aus Transform Manager oder Media Services Packager
-
Segmentiertes HLS
-
PlayReady Protected HLS
Siehe auch
Konzepte
Überlegungen zu Media ServicesWeitere Ressourcen
Dynamische Paketerstellung und Codierung und reservierte Streamingeinheiten
Builddatum: