Codificare un asset con Media Encoder Standard mediante .NETEncode an asset with Media Encoder Standard using .NET

I processi di codifica sono tra le operazioni di elaborazione più frequenti in Servizi multimediali.Encoding jobs are one of the most common processing operations in Media Services. Questi processi vengono creati per convertire i file multimediali da una codifica all'altra.You create encoding jobs to convert media files from one encoding to another. Durante la codifica è possibile usare il codificatore multimediale incorporato in Servizi multimediali.When you encode, you can use the Media Services built-in Media Encoder. È anche possibile usare un codificatore fornito da un partner di Servizi multimediali. I codificatori di terze parti sono disponibili tramite Azure Marketplace.You can also use an encoder provided by a Media Services partner; third-party encoders are available through the Azure Marketplace.

Questo articolo illustra come usare .NET per codificare gli asset con Media Encoder Standard (MES).This article shows how to use .NET to encode your assets with Media Encoder Standard (MES). Media Encoder Standard viene configurato mediante un set di impostazioni descritto qui.Media Encoder Standard is configured using one of the encoders presets described here.

È consigliabile codificare sempre i file di origine con un set MP4 a velocità in bit adattiva e quindi convertire il set nel formato desiderato mediante la creazione dinamica dei pacchetti.It is recommended to always encode your source files into an adaptive bitrate MP4 set and then convert the set to the desired format using the Dynamic Packaging.

Se l'asset di output è protetto con crittografia di archiviazione, è necessario configurare i criteri di distribuzione degli asset.If your output asset is storage encrypted, you must configure asset delivery policy. Per altre informazioni, vedere Configurazione dei criteri di distribuzione degli asset.For more information, see Configuring asset delivery policy.

Nota

MES produce un file di output con un nome contenente i primi 32 caratteri del nome del file di input.MES produces an output file with a name that contains the first 32 characters of the input file name. Il nome è basato su quanto specificato nel file preimpostato.The name is based on what is specified in the preset file. Ad esempio, "FileName": "{Basename}{Index}{Extension}".For example, "FileName": "{Basename}{Index}{Extension}". {Basename} viene sostituito dai primi 32 caratteri del nome del file di input.{Basename} is replaced by the first 32 characters of the input file name.

Formati MESMES Formats

Codec e formatiFormats and codecs

Impostazioni predefinite MESMES Presets

Media Encoder Standard viene configurato mediante un set di impostazioni descritto qui.Media Encoder Standard is configured using one of the encoders presets described here.

Metadati di input e outputInput and output metadata

Quando si codifica un asset di input (o asset) tramite MES, al completamento dell'attività di codifica si ottiene un asset di output.When you encode an input asset (or assets) using MES, you get an output asset at the successful completion of that encode task. L'asset di output contiene video, audio, anteprime, manifesto e così via a seconda del set di impostazioni di codifica che si usa.The output asset contains video, audio, thumbnails, manifest, etc. based on the encoding preset you use.

L'asset di output include anche un file contenente i metadati dell'asset di input.The output asset also contains a file with metadata about the input asset. Il nome del file XML dei metadati ha il seguente formato: <asset_id>_metadata.xml (ad esempio, 41114ad3-eb5e-4c57-8d92-5354e2b7d4a4_metadata.xml), dove <asset_id> è il valore AssetId dell'asset di input.The name of the metadata XML file has the following format: <asset_id>_metadata.xml (for example, 41114ad3-eb5e-4c57-8d92-5354e2b7d4a4_metadata.xml), where <asset_id> is the AssetId value of the input asset. Lo schema di questo file XML di metadati di input è descritto qui.The schema of this input metadata XML is described here.

L'asset di output include anche un file contenente i metadati dell'asset di output.The output asset also contains a file with metadata about the output asset. Il nome del file XML dei metadati ha il seguente formato: <nome_file_origine>_manifest.xml (ad esempio BigBuckBunny_manifest.xml).The name of the metadata XML file has the following format: <source_file_name>_manifest.xml (for example, BigBuckBunny_manifest.xml). Lo schema del file XML dei metadati di output viene descritto qui.The schema of this output metadata XML is described here.

Se si desidera esaminare uno dei due file di metadati, è possibile creare un localizzatore SAS e scaricare il file nel computer locale.If you want to examine either of the two metadata files, you can create a SAS locator and download the file to your local computer. È possibile trovare un esempio su come creare un localizzatore SAS e scaricare un file tramite le estensioni dell'SDK .NET di Servizi multimediali.You can find an example on how to create a SAS locator and download a file Using the Media Services .NET SDK Extensions.

Scaricare un esempioDownload sample

È possibile ottenere ed eseguire da qui un esempio che mostra come codificare con MES.You can get and run a sample that shows how to encode with MES from here.

Codice di esempio .NET.NET sample code

Il seguente codice usa l'SDK .NET di Servizi multimediali per eseguire le seguenti attività: The following code example uses Media Services .NET SDK to perform the following tasks:

  • Creare un processo di codifica.Create an encoding job.
  • Ottenere un riferimento al codificatore Media Encoder Standard.Get a reference to the Media Encoder Standard encoder.
  • Specificare l'uso del set di impostazioni Flusso adattivo.Specify to use the Adaptive Streaming preset.
  • Aggiungere una singola attività di codifica al processo.Add a single encoding task to the job.
  • Specificare l’asset di input da codificare.Specify the input asset to be encoded.
  • Creare un asset di output che contenga l'asset codificato.Create an output asset that contains the encoded asset.
  • Aggiungere un gestore eventi per controllare l'avanzamento del processo.Add an event handler to check the job progress.
  • Inviare il processo.Submit the job.

Creare e configurare un progetto di Visual StudioCreate and configure a Visual Studio project

Configurare l'ambiente di sviluppo e popolare il file app.config con le informazioni di connessione, come descritto in Sviluppo di applicazioni di Servizi multimediali con .NET.Set up your development environment and populate the app.config file with connection information, as described in Media Services development with .NET.

EsempioExample

    using System;
    using System.Linq;
    using System.Configuration;
    using System.IO;
    using System.Threading;
    using Microsoft.WindowsAzure.MediaServices.Client;

    namespace MediaEncoderStandardSample
    {
        class Program
        {
            private static readonly string _AADTenantDomain =
                ConfigurationManager.AppSettings["AADTenantDomain"];
            private static readonly string _RESTAPIEndpoint =
                ConfigurationManager.AppSettings["MediaServiceRESTAPIEndpoint"];

            // Field for service context.
            private static CloudMediaContext _context = null;

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

            static void Main(string[] args)
            {
                var tokenCredentials = new AzureAdTokenCredentials(_AADTenantDomain, AzureEnvironments.AzureCloudEnvironment);
                var tokenProvider = new AzureAdTokenProvider(tokenCredentials);

                _context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider);

                // Get an uploaded asset.
                var asset = _context.Assets.FirstOrDefault();

                // Encode and generate the output using the "Adaptive Streaming" preset.
                EncodeToAdaptiveBitrateMP4Set(asset);

                Console.ReadLine();
            }

            static public IAsset EncodeToAdaptiveBitrateMP4Set(IAsset asset)
            {
                // Declare a new job.
                IJob job = _context.Jobs.Create("Media Encoder Standard Job");
                // Get a media processor reference, and pass to it the name of the 
                // processor to use for the specific task.
                IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard");

                // Create a task with the encoding details, using a string preset.
                // In this case "Adaptive Streaming" preset is used.
                ITask task = job.Tasks.AddNew("My encoding task",
                    processor,
                    "Adaptive Streaming",
                    TaskOptions.None);

                // 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 not encrypted. 
                task.OutputAssets.AddNew("Output asset",
                    AssetCreationOptions.None);

                job.StateChanged += new EventHandler<JobStateChangedEventArgs>(JobStateChanged);
                job.Submit();
                job.GetExecutionProgressTask(CancellationToken.None).Wait();

                return job.OutputMediaAssets[0];
            }

            private static void JobStateChanged(object sender, JobStateChangedEventArgs e)
            {
                Console.WriteLine("Job state changed event:");
                Console.WriteLine("  Previous state: " + e.PreviousState);
                Console.WriteLine("  Current state: " + e.CurrentState);
                switch (e.CurrentState)
                {
                    case JobState.Finished:
                        Console.WriteLine();
                        Console.WriteLine("Job is finished. Please wait while local tasks or downloads complete...");
                        break;
                    case JobState.Canceling:
                    case JobState.Queued:
                    case JobState.Scheduled:
                    case JobState.Processing:
                        Console.WriteLine("Please wait...\n");
                        break;
                    case JobState.Canceled:
                    case JobState.Error:

                        // Cast sender as a job.
                        IJob job = (IJob)sender;

                        // Display or log error details as needed.
                        break;
                    default:
                        break;
                }
            }

            private static IMediaProcessor GetLatestMediaProcessorByName(string mediaProcessorName)
            {
                var processor = _context.MediaProcessors.Where(p => p.Name == mediaProcessorName).
                ToList().OrderBy(p => new Version(p.Version)).LastOrDefault();

                if (processor == null)
                    throw new ArgumentException(string.Format("Unknown media processor", mediaProcessorName));

                return processor;
            }
        }
    }

Funzionalità di codifica avanzate da esplorareAdvanced Encoding Features to explore

Percorsi di apprendimento di Servizi multimedialiMedia Services learning paths

Altre informazioni sui percorsi di apprendimento di Servizi multimediali di Azure:Read about the Azure Media Services learning paths:

Fornire commenti e suggerimentiProvide feedback

Usare il forum di suggerimenti degli utenti per fornire commenti e suggerimenti su come migliorare Servizi multimediali di Azure.Use the User Voice forum to provide feedback and make suggestions on how to improve Azure Media Services. È anche possibile passare direttamente a una delle categorie seguenti:You also can go directly to one of the following categories:

Passaggi successiviNext steps

Come generare l'anteprima mediante Media Encoder Standard con .NET Panoramica della codifica dei servizi multimedialiHow to generate thumbnail using Media Encoder Standard with .NET Media Services Encoding Overview