File multimediali di Hyperlapse con Azure Media HyperlapseHyperlapse Media Files with Azure Media Hyperlapse

Azure Media Hyperlapse è un processore di contenuti multimediali che crea fluidi video in time-lapse da contenuti registrati in prima persona o da fotocamere d'azione.Azure Media Hyperlapse is a Media Processor (MP) that creates smooth time-lapsed videos from first-person or action-camera content. Elemento di pari livello basato sul cloud rispetto a Hyperlapse Pro desktop per Microsoft Research e Hyperlapse Mobile basato su telefono, Microsoft Hyperlapse per Servizi multimediali di Azure usa l'elevata scalabilità della piattaforma di elaborazione multimediale di Servizi multimediali di Azure per scalare orizzontalmente e parallelizzare l'elaborazione in blocco di Hyperlapse.The cloud-based sibling to Microsoft Research's desktop Hyperlapse Pro and phone-based Hyperlapse Mobile, Microsoft Hyperlapse for Azure Media Services utilizes the massive scale of the Azure Media Services Media Processing platform to horizontally scale and parallelize bulk Hyperlapse processing.

Importante

Microsoft Hyperlapse è progettato per un utilizzo ottimale con contenuti in prima persona registrati con una fotocamera in movimento.Microsoft Hyperlapse is designed to work best on first-person content with a moving camera. Sebbene siano supportate anche riprese con telecamere fisse, le prestazioni e la qualità del processore di contenuti multimediali Azure Media Hyperlapse non può essere garantita con tipi di contenuti diversi.Although still-camera footage can still work, the performance and quality of the Azure Media Hyperlapse Media Processor cannot be guaranteed for other types of content. Per altre informazioni su Microsoft Hyperlapse per Servizi multimediali di Azure e vedere alcuni video di esempio, consultare il post di blog introduttivo dall'anteprima pubblica.To learn more about Microsoft Hyperlapse for Azure Media Services and see some example videos, check out the introductory blog post from the public preview.

Un processo di Azure Media Hyperlapse accetta come input un file di asset MP4, MOV o WMV, insieme a un file di configurazione che specifica i fotogrammi del video da rendere in time-lapse e a quale velocità (ad esempio, i primi 10.000 fotogrammi a velocità doppia).An Azure Media Hyperlapse job takes as input an MP4, MOV, or WMV asset file along with a configuration file that specifies which frames of video should be time-lapsed and to what speed (e.g. first 10,000 frames at 2x). L'output è costituito da un rendering stabilizzato e in time-lapse del video di input.The output is a stabilized and time-lapsed rendition of the input video.

Per gli aggiornamenti più recenti relativi ad Azure Media Hyperlapse, vedere i blog di Servizi multimediali.For the latest Azure Media Hyperlapse updates, see Media Services blogs.

Eseguire Hyperlapse su un assetHyperlapse an asset

In primo luogo, è necessario caricare il file di input desiderato in Servizi multimediali di Azure.First you will need to upload your desired input file to Azure Media Services. Per altre informazioni sui concetti inerenti al caricamento e alla gestione dei contenuti, leggere l' articolo sulla gestione dei contenuti.To learn more about the concepts involved with uploading and managing content, read the content management article.

Set di impostazioni di configurazione per HyperlapseConfiguration Preset for Hyperlapse

Dopo aver caricato il contenuto nel proprio account di Servizi multimediali, è necessario costruire il set di impostazioni di configurazione.Once your content is in your Media Services account, you will need to construct your configuration preset. La tabella seguente illustra i campi specificati dall'utente:The following table explains the user-specified fields:

CampoField DescrizioneDescription
StartFrameStartFrame Il fotogramma a partire dal quale deve iniziare l'elaborazione di Microsoft Hyperlapse.The frame upon which the Microsoft Hyperlapse processing should begin.
NumFramesNumFrames Il numero di fotogrammi da elaborareThe number of frames to process
speedSpeed Il fattore su cui impostare la velocità di riproduzione del video di input.The factor with which to speed up the input video.

Di seguito è riportato l'esempio di un file di configurazione conforme in XML e JSON:The following is an example of a conformant configuration file in XML and JSON:

Set di impostazioni XML:XML preset:

<?xml version="1.0" encoding="utf-16"?>
<Preset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0" xmlns="http://www.windowsazure.com/media/encoding/Preset/2014/03">
    <Sources>
        <Source StartFrame="0" NumFrames="10000" />
    </Sources>
    <Options>
        <Speed>12</Speed>
    </Options>
</Preset>

Set di impostazioni JSON:JSON preset:

{
    "Version":1.0,
    "Sources": [
        {
            "StartFrame":0,
            "NumFrames":2147483647
        }
    ],
    "Options": {
        "Speed":1,
        "Stabilize":false
    }
}

Hyperlapse Microsoft con il SDK di .NET AMSMicrosoft Hyperlapse with the AMS .NET SDK

Il metodo seguente carica un file multimediale come asset e crea un processo mediante il processore di contenuti multimediali Azure Media Hyperlapse.The following method uploads a media file as an asset and creates a job with the Azure Media Hyperlapse Media Processor.

Nota

Nell'ambito dovrebbe essere già presente un CloudMediaContext con il nome "contesto" relativo al codice da usare.You should already have a CloudMediaContext in scope with the name "context" for this code to work. Per altre informazioni, leggere l' articolo sulla gestione dei contenuti.To learn more about this, read the content management article.

Nota

L'argomento stringa "hyperConfig" deve essere un set di impostazioni di configurazione conforme scritto in JSON o XML, come descritto in precedenza.The string argument "hyperConfig" is expected to be a conformant configuration preset in either JSON or XML as described above.

    static bool RunHyperlapseJob(string input, string output, string hyperConfig)
    {
        // create asset with input file
        IAsset asset = context
        .Assets
        .CreateAssetAndUploadSingleFile(input, "My Hyperlapse Input", AssetCreationOptions.None);

        // grab instances of Azure Media Hyperlapse MP
        IMediaProcessor mp = context
        .MediaProcessors
        .GetLatestMediaProcessorByName("Azure Media Hyperlapse");

        // create Job with Hyperlapse task
        IJob job = context
        .Jobs
        .Create(String.Format("Hyperlapse {0}", input));

        if (String.IsNullOrEmpty(hyperConfig))
        {
        // config cannot be empty
        return false;
        }

        hyperConfig = File.ReadAllText(hyperConfig);

        ITask hyperlapseTask = job.Tasks.AddNew("Hyperlapse task",
        mp,
        hyperConfig,
        TaskOptions.None);
        hyperlapseTask.InputAssets.Add(asset);
        hyperlapseTask.OutputAssets.AddNew("Hyperlapse output",
        AssetCreationOptions.None);

        job.Submit();

        // Create progress printing and querying tasks
        Task progressPrintTask = new Task(() =>
        {

        IJob jobQuery = null;
        do
        {
            var progressContext = context;
            jobQuery = progressContext.Jobs
            .Where(j => j.Id == job.Id)
            .First();
            Console.WriteLine(string.Format("{0}\t{1}\t{2}",
            DateTime.Now,
            jobQuery.State,
            jobQuery.Tasks[0].Progress));
            Thread.Sleep(10000);
        }
        while (jobQuery.State != JobState.Finished &&
                               jobQuery.State != JobState.Error &&
                               jobQuery.State != JobState.Canceled);
            });

        progressPrintTask.Start();

        Task progressJobTask = job.GetExecutionProgressTask(
                                             CancellationToken.None);
        progressJobTask.Wait();

        // If job state is Error, the event handling
        // method for job progress should log errors.  Here we check
        // for error state and exit if needed.
        if (job.State == JobState.Error)
        {
            ErrorDetail error = job.Tasks.First().ErrorDetails.First();
            Console.WriteLine(string.Format("Error: {0}. {1}",
                                            error.Code,
                                            error.Message));  
            return false;                  
        }

    DownloadAsset(job.OutputMediaAssets.First(), output);
    return true;
}

static void DownloadAsset(IAsset asset, string outputDirectory)
{
    foreach (IAssetFile file in asset.AssetFiles)
    {
        file.Download(Path.Combine(outputDirectory, file.Name));
    }
}


static IAsset CreateAssetAndUploadSingleFile(string filePath, string assetName, AssetCreationOptions options)
{
    IAsset asset = context.Assets.Create(assetName, options);

    var assetFile = asset.AssetFiles.Create(Path.GetFileName(filePath));
    assetFile.Upload(filePath);

    return asset;
}

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;
}

Tipi di file supportatiSupported File types

  • MP4MP4
  • MOVMOV
  • WMVWMV

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:

Panoramica di Analisi servizi multimediali di AzureAzure Media Services Analytics Overview

Demo di Analisi servizi multimediali di AzureAzure Media Analytics demos