VENTES: 1-800-867-1389

Création d'un travail d'encodage à l'aide du Kit de développement logiciel (SDK) des Services de média pour .NET

Mis à jour: juillet 2014

Pour fournir une vidéo numérique sur Internet, vous devez compresser le contenu multimédia. Les fichiers vidéo numériques sont volumineux et peuvent être trop grands pour être proposés sur Internet ou pour être affichés correctement par les appareils de vos clients. L'encodage consiste à compresser les données vidéo et audio afin que vos clients puissent visualiser votre contenu multimédia.

Les travaux d'encodage comptent parmi les opérations de traitement les plus courantes dans les Services de média. Ils permettent de convertir des fichiers multimédias d'un encodage à un autre. Pour un encodage, vous pouvez utiliser l'encodeur multimédia intégré aux Services de média. Vous pouvez également utiliser un encodeur fourni par un partenaire des Services de média. Des encodeurs tiers sont disponibles sur Azure Marketplace. Vous pouvez spécifier les détails des tâches d'encodage en utilisant des chaînes de présélection définies pour votre encodeur ou en utilisant des fichiers de configuration de présélection. Pour voir les types de présélections disponibles, consultez Préréglages des tâches pour Windows Azure Media Services. Si vous avez utilisé un encodeur tiers, vous devez valider vos fichiers.

Quand vous utilisez les Services de média, l'un des scénarios courants est le suivant :

  1. Téléchargez un fichier d'entrée (appelé « fichier mezzanine »). Par exemple, H.264, MP4 ou WMV (pour obtenir la liste des formats pris en charge, consultez Formats pris en charge par Media Services Encoder).

  2. Encodez votre fichier mezzanine en ensembles de fichiers MP4 à débit adaptatif H.264.

    noteRemarque
    Il est recommandé de toujours encoder vos fichiers mezzanine en un ensemble de fichiers MP4 à débit adaptatif, puis de convertir cet ensemble au format souhaité en utilisant la Mise en package dynamique ou la Mise en package statique.

    Si vous souhaitez encoder votre fichier mezzanine directement au format Smooth Streaming, vous pouvez utiliser n'importe laquelle des présélections « Smooth Streaming » décrites dans Présélections système de l'encodeur des Services de média. Toutefois, cela n'est pas recommandé, à moins que votre fichier mezzanine soit de très petite taille.

    Si vous souhaitez convertir un fichier WMV au format Smooth Streaming, vous devez commencer par l'encoder au format H.264. WMV est un codec vidéo généralement doté d'un format de conteneur ASF. H.264 est un codec vidéo qui peut être utilisé avec le format de conteneur MP4. La diffusion en continu lisse (Smooth Streaming) utilise une variante du format MP4 appelée MP4 fragmenté ou f-mp4. Le format Smooth Streaming est un format de diffusion adaptatif qui requiert un ensemble de fichiers de différents débits binaires et tous encodés avec des fragments alignés sur les débits binaires. Un ensemble de fichiers MP4 encodés avec des fragments alignés peut être converti au format f-mp4 sans qu'un réencodage soit nécessaire. Ce n'est pas le cas des fichiers WMV. Pour plus d'informations, consultez Présentation technique de la diffusion en continu lisse.  

  3. Publiez la ressource qui contient l'ensemble de fichiers MP4 à débit adaptatif en créant le localisateur à la demande.

  4. Fournissez votre contenu aux clients. Utilisez la Mise en package dynamique pour proposer votre contenu dans des formats appropriés (par exemple, MPEG DASH, Smooth Streaming et HLS).

    Si vous souhaitez protéger votre contenu, reportez-vous aux rubriques de la section Sécurisation du contenu multimédia.

Cette rubrique indique comment Télécharger un fichier MP4 et produire des ensembles de fichiers MP4 à débit adaptatif H.264 à l'aide de l'encodeur multimédia Azure. Elle indique également comment créer des URL de diffusion MPEG DASH, HLS et Smooth Streaming.

Les rubriques suivantes indiquent quelle configuration effectuer pour un développement des Services de média.

  1. Configuration du développement du Kit de développement logiciel (SDK) des Services de média pour .NET

    Notez que le code présenté dans cette rubrique utilise les extensions du Kit de développement logiciel (SDK) des Services de média Azure pour .NET.  Les extensions du Kit de développement logiciel (SDK) des Services de média pour .NET sont un ensemble de méthodes d'extension et de fonctions d'assistance qui simplifient votre code et le développement avec les Services de média.

  2. Connexion aux Services de média à l’aide du Kit de développement logiciel (SDK) des Services de média

L'exemple suivant montre comment créer un travail d'encodage basé sur la chaîne de présélection "H264 Adaptive Bitrate MP4 Set 720p". La liste des chaînes de présélection est fournie dans la rubrique Présélections système de l'encodeur des Services de média.

Le code de cette section effectue les opérations suivantes :

  1. Il télécharge un fichier .mp4 unique.

  2. Il encode le fichier .mp4 en un ensemble de fichiers MP4 à débit adaptatif.

    Une fois que vous avez encodé votre ressource en un ensemble de fichiers à débit adaptatif H.264, vous pouvez tirer parti de la mise en package dynamique. La Mise en package dynamique vous permet de fournir des flux conformément au protocole spécifié sans autre mise en package.

  3. Il publie la ressource en créant le localisateur à la demande.

  4. Il obtient les URL de diffusion MPEG DASH, Smooth Streaming et HLS. Pour plus d'informations, consultez Fourniture des éléments multimédias avec le Kit de développement logiciel (SDK) de Media Services pour .NET.

Veillez à mettre à jour le code pour qu'il pointe sur le dossier contenant votre fichier MP4 d'entrée.

private static readonly string _mediaFiles =
Path.GetFullPath(@"../..\Media");

private static readonly string _singleMP4File =
    Path.Combine(_mediaFiles, @"SingleMP4\BigBuckBunny.mp4");

Cet exemple utilise les extensions du Kit de développement logiciel (SDK) des Services de média Azure pour .NET.  

using Microsoft.WindowsAzure.MediaServices.Client;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace MediaServicesPackaging
{
    class Program
    {
        private static readonly string _mediaFiles =
            Path.GetFullPath(@"../..\Media");

        private static readonly string _singleMP4File =
            Path.Combine(_mediaFiles, @"SingleMP4\BigBuckBunny.mp4");

        private static MediaServicesCredentials _cachedCredentials = null;
        private static CloudMediaContext _context = null;

        // Media Services account information.
        private static readonly string _mediaServicesAccountName =
            ConfigurationManager.AppSettings["MediaServicesAccountName"];
        private static readonly string _mediaServicesAccountKey =
            ConfigurationManager.AppSettings["MediaServicesAccountKey"];

        static void Main(string[] args)
        {
            // Create and cache the Media Services credentials in a static class variable.
            _cachedCredentials = new MediaServicesCredentials(
                            _mediaServicesAccountName,
                            _mediaServicesAccountKey);

            // Use the cached credentials to create CloudMediaContext.
            _context = new CloudMediaContext(_cachedCredentials);

            // Use the SDK extension method to create a new asset by 
            // uploading a mezzanine file from a local path.
            IAsset asset = _context.Assets.CreateFromFile(
                _singleMP4File,
                AssetCreationOptions.None,
                (af, p) =>
                {
                    Console.WriteLine("Uploading '{0}' - Progress: {1:0.##}%", af.Name, p.Progress);
                });

            // Encode an MP4 file to a set of multibitrate MP4s.
            IAsset assetMultibitrateMP4s =
                EncodeMP4ToMultibitrateMP4s(asset);

            // Publish the asset.
            _context.Locators.Create(
                LocatorType.OnDemandOrigin,
                assetMultibitrateMP4s,
                AccessPermissions.Read,
                TimeSpan.FromDays(30));

            // Get the URLs.
            Console.WriteLine("Smooth Streaming URL:");
            Console.WriteLine(assetMultibitrateMP4s.GetSmoothStreamingUri().ToString());
            Console.WriteLine("MPEG DASH URL:");
            Console.WriteLine(assetMultibitrateMP4s.GetMpegDashUri().ToString());
            Console.WriteLine("HLS URL:");
            Console.WriteLine(assetMultibitrateMP4s.GetHlsUri().ToString());
        }

        public static IAsset EncodeMP4ToMultibitrateMP4s(IAsset asset)
        {
            // Create a new job.
            IJob job = _context.Jobs.Create("Convert MP4 to Smooth Streaming.");

            // In Media Services, a media processor is a component that handles a specific processing task, 
            // such as encoding, format conversion, encrypting, or decrypting media content.
            //
            // Use the SDK extension method to  get a reference to the Azure Media Encoder.
            IMediaProcessor encoder = _context.MediaProcessors.GetLatestMediaProcessorByName(
                MediaProcessorNames.WindowsAzureMediaEncoder);

            // Add task 1 - Encode single MP4 into multibitrate MP4s.
            ITask adpativeBitrateTask = job.Tasks.AddNew("MP4 to Adaptive Bitrate Task",
                encoder,
                "H264 Adaptive Bitrate MP4 Set 720p",
                TaskOptions.None);

            // Specify the input Asset
            adpativeBitrateTask.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).
            adpativeBitrateTask.OutputAssets.AddNew("Multibitrate MP4s",
                                    AssetCreationOptions.None);

            // Submit the job and wait until it is completed.
            job.Submit();
            job = job.StartExecutionProgressTask(
                j =>
                {
                    Console.WriteLine("Job state: {0}", j.State);
                    Console.WriteLine("Job progress: {0:0.##}%", j.GetOverallProgress());
                },
                CancellationToken.None).Result;

            // Get the output asset that contains the smooth stream.
            return job.OutputMediaAssets[0];
        }
    }
}

Générez et exécutez votre programme.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Afficher:
© 2014 Microsoft