Eseguire attività di codifica avanzata personalizzando i set di impostazioni di Media Encoder StandardPerform advanced encoding by customizing MES presets

PanoramicaOverview

Questo argomento descrive come personalizzare i set d impostazioni di Media Encoder Standard.This topic shows how to customize Media Encoder Standard presets. L'argomento Codifica avanzata con Media Encoder Standard mostra come usare .NET per creare un'attività di codifica e un processo per l'esecuzione di tale attività.The Encoding with Media Encoder Standard using custom presets topic shows how to use .NET to create an encoding task and a job that executes this task. Dopo aver personalizzato un set di impostazioni, fornire tali impostazioni all'attività di codifica.Once you customize a preset, supply the custom presets to the encoding task.

Nota

Se si usa un set di impostazioni XML, assicurarsi di mantenere l'ordine degli elementi, come illustrato negli esempi XML seguenti (KeyFrameInterval, ad esempio, deve precedere SceneChangeDetection).If using an XML preset, make sure to preserve the order of elements, as shown in XML samples below (for example, KeyFrameInterval should precede SceneChangeDetection).

In questo argomento vengono illustrati i set di impostazioni personalizzati che eseguono le attività di codifica seguenti.In this topic, the custom presets that perform the following encoding tasks are demonstrated.

Supporto per le dimensioni relativeSupport for relative sizes

Quando si generano anteprime, non è sempre necessario specificare la larghezza e l'altezza dell'output in pixel.When generating thumbnails, you do not need to always specify output width and height in pixels. È possibile specificare questi valori sotto forma di percentuali nell'intervallo [1%, …, 100%].You can specify them in percentages, in the range [1%, …, 100%].

Set di impostazioni JSONJSON preset

"Width": "100%",
"Height": "100%"

Set di impostazioni XMLXML preset

<Width>100%</Width>
<Height>100%</Height>

Generare anteprimeGenerate thumbnails

Questa sezione illustra come personalizzare un set di impostazioni che genera anteprime.This section shows how to customize a preset that generates thumbnails. Il set di impostazioni definito di seguito contiene informazioni su come codificare il file, nonché le informazioni necessarie per generare le anteprime.The preset defined below contains information on how you want to encode your file as well as information needed to generate thumbnails. È possibile usare uno dei set di impostazioni per Media Encoder Standard documentati in questa sezione e aggiungere il codice che genera le anteprime.You can take any of the MES presets documented this section and add code that generates thumbnails.

Nota

L'impostazione SceneChangeDetection nell'impostazione predefinita seguente può essere impostata a true solo in caso di codifica in un video a velocità in bit singola.The SceneChangeDetection setting in the following preset can only be set to true if you are encoding to a single bitrate video. In caso di codifica in video a bitrate multipli e impostazione di SceneChangeDetection su true, il codificatore restituisce un errore.If you are encoding to a multi-bitrate video and set SceneChangeDetection to true, the encoder returns an error.

Per informazioni sullo schema, vedere questo argomento.For information about schema, see this topic.

Assicurarsi di esaminare la sezione Considerazioni .Make sure to review the Considerations section.

Set di impostazioni JSONJSON preset

{
  "Version": 1.0,
  "Codecs": [
    {
      "KeyFrameInterval": "00:00:02",
      "SceneChangeDetection": "true",
      "H264Layers": [
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 4500,
          "MaxBitrate": 4500,
          "BufferWindow": "00:00:05",
          "Width": 1280,
          "Height": 720,
          "ReferenceFrames": 3,
          "EntropyMode": "Cabac",
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"

        }
      ],
      "Type": "H264Video"
    },
    {
      "JpgLayers": [
        {
          "Quality": 90,
          "Type": "JpgLayer",
          "Width": 640,
          "Height": 360
        }
      ],
      "Start": "{Best}",
      "Type": "JpgImage"
    },
    {
      "PngLayers": [
        {
          "Type": "PngLayer",
          "Width": 640,
          "Height": 360,
        }
      ],
      "Start": "00:00:01",
      "Step": "00:00:10",
      "Range": "00:00:58",
      "Type": "PngImage"
    },
    {
      "BmpLayers": [
        {
          "Type": "BmpLayer",
          "Width": 640,
          "Height": 360
        }
      ],
      "Start": "10%",
      "Step": "10%",
      "Range": "90%",
      "Type": "BmpImage"
    },
    {
      "Channels": 2,
      "SamplingRate": 48000,
      "Bitrate": 128,
      "Type": "AACAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}_{Index}{Extension}",
      "Format": {
        "Type": "JpgFormat"
      }
    },
    {
      "FileName": "{Basename}_{Index}{Extension}",
      "Format": {
        "Type": "PngFormat"
      }
    },
    {
      "FileName": "{Basename}_{Index}{Extension}",
      "Format": {
        "Type": "BmpFormat"
      }
    },
    {
      "FileName": "{Basename}_{Width}x{Height}_{VideoBitrate}.mp4",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Set di impostazioni XMLXML preset

<?xml version="1.0" encoding="utf-16"?>
<Preset xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0" xmlns="http://www.windowsazure.com/media/encoding/Preset/2014/03">
  <Encoding>
    <H264Video>
      <KeyFrameInterval>00:00:02</KeyFrameInterval>
      <SceneChangeDetection>true</SceneChangeDetection>
      <H264Layers>
        <H264Layer>
          <Bitrate>4500</Bitrate>
          <Width>1280</Width>
          <Height>720</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>4500</MaxBitrate>
        </H264Layer>
      </H264Layers>
    </H264Video>
    <AACAudio>
      <Profile>AACLC</Profile>
      <Channels>2</Channels>
      <SamplingRate>48000</SamplingRate>
      <Bitrate>128</Bitrate>
    </AACAudio>
    <JpgImage Start="{Best}">
      <JpgLayers>
        <JpgLayer>
          <Width>640</Width>
          <Height>360</Height>
          <Quality>90</Quality>
        </JpgLayer>
      </JpgLayers>
    </JpgImage>
    <BmpImage Start="10%" Step="10%" Range="90%">
      <BmpLayers>
        <BmpLayer>
          <Width>640</Width>
          <Height>360</Height>
        </BmpLayer>
      </BmpLayers>
    </BmpImage>
    <PngImage Start="00:00:01" Step="00:00:10" Range="00:00:58">
      <PngLayers>
        <PngLayer>
          <Width>640</Width>
          <Height>360</Height>
        </PngLayer>
      </PngLayers>
    </PngImage>
  </Encoding>
  <Outputs>
    <Output FileName="{Basename}_{Width}x{Height}_{VideoBitrate}.mp4">
      <MP4Format />
    </Output>
    <Output FileName="{Basename}_{Index}{Extension}">
      <JpgFormat />
    </Output>
    <Output FileName="{Basename}_{Index}{Extension}">
      <BmpFormat />
    </Output>
    <Output FileName="{Basename}_{Index}{Extension}">
      <PngFormat />
    </Output>
  </Outputs>
</Preset>

ConsiderazioniConsiderations

Si applicano le considerazioni seguenti:The following considerations apply:

  • L'utilizzo di timestamp espliciti per Inizio/Passaggio/Intervallo presuppone che l'origine dell'input duri almeno 1 minuto.The use of explicit timestamps for Start/Step/Range assumes that the input source is at least 1 minute long.
  • Gli elementi Jpg/Png/BmpImage hanno gli attributi inizio, passaggio e intervallo della stringa, che possono essere interpretati come:Jpg/Png/BmpImage elements have Start, Step, and Range string attributes – these can be interpreted as:

    • Se sono numeri interi non negativi, numero di frame, ad esempio "Start": "120",Frame Number if they are non-negative integers, for example "Start": "120",
    • Relativi alla durata di origine se espressi con il suffisso %, ad esempio "Start": "15%", ORRelative to source duration if expressed as %-suffixed, for example "Start": "15%", OR
    • Timestamp se espresso come HH:MM:SSTimestamp if expressed as HH:MM:SS… come formato, ad esempio "Start": "00:01:00"format, for example "Start" : "00:01:00"

      È possibile combinare e associare le notazioni a piacimento.You can mix and match notations as you please.

      Inoltre, Inizio supporta anche una Macro speciale: {Best}, che tenta di determinare il primo fotogramma "interessante" della NOTA contenuto: (Passaggio e Intervallo vengono ignorati quando Inizio è impostato su {Best})Additionally, Start also supports a special Macro:{Best}, which attempts to determine the first “interesting” frame of the content NOTE: (Step and Range are ignored when Start is set to {Best})

    • Impostazioni predefinite: Start: {Best}Defaults: Start:{Best}
  • Il formato di output deve essere specificato in modo esplicito per ogni formato immagine: Jpg/Png/BmpFormat.Output format needs to be explicitly provided for each Image format: Jpg/Png/BmpFormat. Quando è presente, MES collega JpgVideo a JpgFormat e così via.When present, MES matches JpgVideo to JpgFormat and so on. OutputFormat presenta una nuova Macro specifica di codec di immagine : {Index}, che deve essere presente (una volta e una sola volta) per i formati immagine.OutputFormat introduces a new image-codec specific Macro: {Index}, which needs to be present (once and only once) for image output formats.

Tagliare un video (ritaglio)Trim a video (clipping)

Questa sezione descrive la modifica di set di impostazioni del codificatore per tagliare o ritagliare il video di input quando l'input è un file in formato intermedio o su richiesta.This section talks about modifying the encoder presets to clip or trim the input video where the input is a so-called mezzanine file or on-demand file. Il codificatore può anche essere usato per tagliare o ritagliare un asset acquisito o archiviato da un flusso in tempo reale. Per i relativi dettagli, vedere questo blog.The encoder can also be used to clip or trim an asset, which is captured or archived from a live stream – the details for this are available in this blog.

Per tagliare i video, è possibile eseguire uno dei set di impostazioni di Media Encoder Standard documentati in questa sezione e modificare l'elemento Sources (come illustrato di seguito).To trim your videos, you can take any of the MES presets documented this section and modify the Sources element (as shown below). Il valore di StartTime deve corrispondere ai timestamp assoluti del video di input.The value of StartTime needs to match the absolute timestamps of the input video. Ad esempio, se il primo fotogramma del video di input ha un timestamp di 12:00:10.000, il valore di StartTime deve essere di almeno 12:00:10.000 o superiore.For example, if the first frame of the input video has a timestamp of 12:00:10.000, then StartTime should be at least 12:00:10.000 and greater. Nell'esempio seguente, si presuppone che il video di input abbia un timestamp iniziale pari a zero.In the example below, we assume that the input video has a starting timestamp of zero. Sources deve essere posizionato all'inizio del set di impostazioni.Sources should be placed at the beginning of the preset.

Set di impostazioni JSONJSON preset

{
  "Version": 1.0,
  "Sources": [
    {
      "StartTime": "00:00:04",
      "Duration": "00:00:16"
    }
  ],
  "Codecs": [
    {
      "KeyFrameInterval": "00:00:02",
      "StretchMode": "AutoSize",
      "H264Layers": [
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 3400,
          "MaxBitrate": 3400,
          "BufferWindow": "00:00:05",
          "Width": 1280,
          "Height": 720,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        },
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 2250,
          "MaxBitrate": 2250,
          "BufferWindow": "00:00:05",
          "Width": 960,
          "Height": 540,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        },
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 1500,
          "MaxBitrate": 1500,
          "BufferWindow": "00:00:05",
          "Width": 960,
          "Height": 540,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        },
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 1000,
          "MaxBitrate": 1000,
          "BufferWindow": "00:00:05",
          "Width": 640,
          "Height": 360,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        },
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 650,
          "MaxBitrate": 650,
          "BufferWindow": "00:00:05",
          "Width": 640,
          "Height": 360,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        },
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 400,
          "MaxBitrate": 400,
          "BufferWindow": "00:00:05",
          "Width": 320,
          "Height": 180,
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "FrameRate": "0/1"
        }
      ],
      "Type": "H264Video"
    },
    {
      "Profile": "AACLC",
      "Channels": 2,
      "SamplingRate": 48000,
      "Bitrate": 128,
      "Type": "AACAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}_{Width}x{Height}_{VideoBitrate}.mp4",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Set di impostazioni XMLXML preset

Per tagliare i video, è possibile eseguire un’impostazione predefinita MES documentata qui e modificare l'elemento Sources (come illustrato di seguito).To trim your videos, you can take any of the MES presets documented here and modify the Sources element (as shown below).

<?xml version="1.0" encoding="utf-16"?>
<Preset xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0" xmlns="http://www.windowsazure.com/media/encoding/Preset/2014/03">
  <Sources>
    <Source StartTime="PT4S" Duration="PT14S"/>
  </Sources>
  <Encoding>
    <H264Video>
      <KeyFrameInterval>00:00:02</KeyFrameInterval>
      <H264Layers>
        <H264Layer>
          <Bitrate>3400</Bitrate>
          <Width>1280</Width>
          <Height>720</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>3400</MaxBitrate>
        </H264Layer>
        <H264Layer>
          <Bitrate>2250</Bitrate>
          <Width>960</Width>
          <Height>540</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>2250</MaxBitrate>
        </H264Layer>
        <H264Layer>
          <Bitrate>1500</Bitrate>
          <Width>960</Width>
          <Height>540</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>1500</MaxBitrate>
        </H264Layer>
        <H264Layer>
          <Bitrate>1000</Bitrate>
          <Width>640</Width>
          <Height>360</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>1000</MaxBitrate>
        </H264Layer>
        <H264Layer>
          <Bitrate>650</Bitrate>
          <Width>640</Width>
          <Height>360</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>650</MaxBitrate>
        </H264Layer>
        <H264Layer>
          <Bitrate>400</Bitrate>
          <Width>320</Width>
          <Height>180</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>3</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cabac</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>400</MaxBitrate>
        </H264Layer>
      </H264Layers>
    </H264Video>
    <AACAudio>
      <Profile>AACLC</Profile>
      <Channels>2</Channels>
      <SamplingRate>48000</SamplingRate>
      <Bitrate>128</Bitrate>
    </AACAudio>
  </Encoding>
  <Outputs>
    <Output FileName="{Basename}_{Width}x{Height}_{VideoBitrate}.mp4">
      <MP4Format />
    </Output>
  </Outputs>
</Preset>

Creare una sovrimpressioneCreate an overlay

Il Media Encoder Standard consente di sovrapporre un'immagine a un video esistente.The Media Encoder Standard allows you to overlay an image onto an existing video. Attualmente, sono supportati i seguenti formati: png, jpg, gif e bmp.Currently, the following formats are supported: png, jpg, gif, and bmp. Il set di impostazioni definito di seguito è un esempio di base di una sovrimpressione video.The preset defined below is a basic example of a video overlay.

Oltre a definire un file del set di impostazioni, è anche necessario indicare a Servizi multimediali quale file dell'asset corrisponde all'immagine da sovrapporre e quale file contiene il video di origine sul quale sovrapporre l'immagine.In addition to defining a preset file, you also have to let Media Services know which file in the asset is the overlay image and which file is the source video onto which you want to overlay the image. Il file video deve essere il file primario .The video file has to be the primary file.

Se si usa .NET, aggiungere le due funzioni seguenti all'esempio .NET definito in questo argomento.If you are using .NET, add the following two functions to the .NET example defined in this topic. La funzione UploadMediaFilesFromFolder carica i file, ad esempio BigBuckBunny.mp4 e Image001.png, da una cartella e imposta il file con estensione mp4 come file primario dell'asset.The UploadMediaFilesFromFolder function uploads files from a folder (for example, BigBuckBunny.mp4 and Image001.png) and sets the mp4 file to be the primary file in the asset. La funzione EncodeWithOverlay usa il file di set di impostazioni personalizzato passato alla funzione stessa, ad esempio il set di impostazioni seguente, per creare l'attività di codifica.The EncodeWithOverlay function uses the custom preset file that was passed to it (for example, the preset that follows) to create the encoding task.

static public IAsset UploadMediaFilesFromFolder(string folderPath)
{
    IAsset asset = _context.Assets.CreateFromFolder(folderPath, AssetCreationOptions.None);

    foreach (var af in asset.AssetFiles)
    {
        // The following code assumes 
        // you have an input folder with one MP4 and one overlay image file.
        if (af.Name.Contains(".mp4"))
            af.IsPrimary = true;
        else
            af.IsPrimary = false;

        af.Update();
    }

    return asset;
}

static public IAsset EncodeWithOverlay(IAsset assetSource, string customPresetFileName)
{
    // 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");

    // Load the XML (or JSON) from the local file.
    string configuration = File.ReadAllText(customPresetFileName);

    // Create a task
    ITask task = job.Tasks.AddNew("Media Encoder Standard encoding task",
        processor,
        configuration,
        TaskOptions.None);

    // Specify the input assets to be encoded.
    // This asset contains a source file and an overlay file.
    task.InputAssets.Add(assetSource);

    // Add an output asset to contain the results of the job. 
    task.OutputAssets.AddNew("Output asset",
        AssetCreationOptions.None);

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

    return job.OutputMediaAssets[0];
}

Nota

Limitazioni correnti:Current limitations:

L'impostazione di opacità della sovrimpressione non è supportata.The overlay opacity setting is not supported.

Il file video di origine e il file dell'immagine sovrapposta devono essere nello stesso asset e il file video deve essere impostato come file primario nell'asset.Your source video file and the overlay image file have to be in the same asset, and the video file needs to be set as the primary file in this asset.

Set di impostazioni JSONJSON preset

{
  "Version": 1.0,
  "Sources": [
    {
      "Streams": [],
      "Filters": {
        "VideoOverlay": {
          "Position": {
            "X": 100,
            "Y": 100,
            "Width": 100,
            "Height": 50
          },
          "AudioGainLevel": 0.0,
          "MediaParams": [
            {
              "OverlayLoopCount": 1
            },
            {
              "IsOverlay": true,
              "OverlayLoopCount": 1,
              "InputLoop": true
            }
          ],
          "Source": "Image001.png",
          "Clip": {
            "Duration": "00:00:05"
          },
          "FadeInDuration": {
            "Duration": "00:00:01"
          },
          "FadeOutDuration": {
            "StartTime": "00:00:03",
            "Duration": "00:00:04"
          }
        }
      },
      "Pad": true
    }
  ],
  "Codecs": [
    {
      "KeyFrameInterval": "00:00:02",
      "H264Layers": [
        {
          "Profile": "Auto",
          "Level": "auto",
          "Bitrate": 1045,
          "MaxBitrate": 1045,
          "BufferWindow": "00:00:05",
          "ReferenceFrames": 3,
          "EntropyMode": "Cavlc",
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "Width": "640",
          "Height": "360",
          "FrameRate": "0/1"
        }
      ],
      "Type": "H264Video"
    },
    {
      "Type": "CopyAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}{Extension}",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Set di impostazioni XMLXML preset

<?xml version="1.0" encoding="utf-16"?>
<Preset xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0" xmlns="http://www.windowsazure.com/media/encoding/Preset/2014/03">
  <Sources>
    <Source>
      <Streams />
      <Filters>
        <VideoOverlay>
          <Source>Image001.png</Source>
          <Clip Duration="PT5S" />
          <FadeInDuration Duration="PT1S" />
          <FadeOutDuration StartTime="PT3S" Duration="PT4S" />
          <Position X="100" Y="100" Width="100" Height="50" />
          <Opacity>0</Opacity>
          <AudioGainLevel>0</AudioGainLevel>
          <MediaParams>
            <MediaParam>
              <IsOverlay>false</IsOverlay>
              <OverlayLoopCount>1</OverlayLoopCount>
              <InputLoop>false</InputLoop>
            </MediaParam>
            <MediaParam>
              <IsOverlay>true</IsOverlay>
              <OverlayLoopCount>1</OverlayLoopCount>
              <InputLoop>true</InputLoop>
            </MediaParam>
          </MediaParams>
        </VideoOverlay>
      </Filters>
      <Pad>true</Pad>
    </Source>
  </Sources>
  <Encoding>
    <H264Video>
      <KeyFrameInterval>00:00:02</KeyFrameInterval>
      <H264Layers>
        <H264Layer>
          <Bitrate>1045</Bitrate>
          <Width>640</Width>
          <Height>360</Height>
          <FrameRate>0/1</FrameRate>
          <Profile>Auto</Profile>
          <Level>auto</Level>
          <BFrames>0</BFrames>
          <ReferenceFrames>3</ReferenceFrames>
          <Slices>0</Slices>
          <AdaptiveBFrame>true</AdaptiveBFrame>
          <EntropyMode>Cavlc</EntropyMode>
          <BufferWindow>00:00:05</BufferWindow>
          <MaxBitrate>1045</MaxBitrate>
        </H264Layer>
      </H264Layers>
    </H264Video>
    <CopyAudio />
  </Encoding>
  <Outputs>
    <Output FileName="{Basename}{Extension}">
      <MP4Format />
    </Output>
  </Outputs>
</Preset>

Inserire una traccia audio silenziosa quando l'input è privo di audioInsert a silent audio track when input has no audio

Per impostazione predefinita, se si invia al codificatore un input che contiene solo video e nessun audio, l'asset di output contiene file di soli dati video.By default, if you send an input to the encoder that contains only video, and no audio, then the output asset contains files that contain only video data. Alcuni lettori non possono gestire flussi di output di questo tipo.Some players may not be able to handle such output streams. In tal caso, è possibile usare questa impostazione per forzare l'aggiunta di una traccia audio silenziosa all'output da parte del codificatore.You can use this setting to force the encoder to add a silent audio track to the output in that scenario.

Per forzare la generazione di un asset contenente una traccia audio silenziosa da parte del codificatore quando l'input è privo di audio, specificare il valore "InsertSilenceIfNoAudio".To force the encoder to produce an asset that contains a silent audio track when input has no audio, specify the "InsertSilenceIfNoAudio" value.

È possibile usare uno dei set di impostazioni di Media Encoder Standard documentati in questa sezione e apportare la modifica seguente:You can take any of the MES presets documented in this section, and make the following modification:

Set di impostazioni JSONJSON preset

{
  "Channels": 2,
  "SamplingRate": 44100,
  "Bitrate": 96,
  "Type": "AACAudio",
  "Condition": "InsertSilenceIfNoAudio"
}

Set di impostazioni XMLXML preset

<AACAudio Condition="InsertSilenceIfNoAudio">
  <Channels>2</Channels>
  <SamplingRate>44100</SamplingRate>
  <Bitrate>96</Bitrate>
</AACAudio>

Disabilitare il deinterlacciamento automaticoDisable auto de-interlacing

I clienti non devono eseguire alcuna operazione se desiderano che il contenuto interlacciato sia automaticamente deinterlacciato.Customers don’t need to do anything if they like the interlace contents to be automatically de-interlaced. Quando il deinterlacciamento automatico è attivato (impostazione predefinita) il MES rileva automaticamente i fotogrammi interlacciati e deinterlaccia solo i fotogrammi contrassegnati come interlacciati.When the auto de-interlacing is on (default) the MES does the auto detection of interlaced frames and only de-interlaces frames marked as interlaced.

È possibile disattivare il deinterlacciamento automatico.You can turn the auto de-interlacing off. Questa opzione non è consigliata.This option is not recommended.

Set di impostazioni JSONJSON preset

"Sources": [
{
 "Filters": {
    "Deinterlace": {
      "Mode": "Off"
    }
  },
}
]

Set di impostazioni XMLXML preset

<Sources>
<Source>
  <Filters>
    <Deinterlace>
      <Mode>Off</Mode>
    </Deinterlace>
  </Filters>
</Source>
</Sources>

Impostazioni predefinite solo audioAudio-only presets

In questa sezione vengono illustrate due impostazioni predefinite MES solo audio: Audio AAC e Audio AAC di buona qualità.This section demonstrates two audio-only MES presets: AAC Audio and AAC Good Quality Audio.

Audio ACCAAC Audio

{
  "Version": 1.0,
  "Codecs": [
    {
      "Profile": "AACLC",
      "Channels": 2,
      "SamplingRate": 48000,
      "Bitrate": 128,
      "Type": "AACAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}_AAC_{AudioBitrate}.mp4",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Audio AAC di buona qualitàAAC Good Quality Audio

{
  "Version": 1.0,
  "Codecs": [
    {
      "Profile": "AACLC",
      "Channels": 2,
      "SamplingRate": 48000,
      "Bitrate": 192,
      "Type": "AACAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}_AAC_{AudioBitrate}.mp4",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Concatenare due o più file videoConcatenate two or more video files

Nell'esempio seguente viene illustrato come generare un set di impostazioni per concatenare due o più file video.The following example illustrates how you can generate a preset to concatenate two or more video files. Lo scenario più comune è l'aggiunta di un'intestazione o una sequenza finale al video principale.The most common scenario is when you want to add a header or a trailer to the main video. L'uso previsto sono i file video modificati insieme che condividono proprietà: risoluzione video, frequenza dei fotogrammi, conteggio tracce audio e così via.The intended use is when the video files being edited together share properties (video resolution, frame rate, audio track count, etc.). Prestare attenzione a non combinare video con frequenze dei fotogrammi diverse o con un numero diverso di tracce audio.You should take care not to mix videos of different frame rates, or with different number of audio tracks.

Nota

La struttura corrente della funzionalità di concatenazione prevede che i clip video siano coerenti in termini di risoluzione, frequenza dei fotogrammi e così via.The current design of the concatenation feature expects that the input video clips are consistent in terms of resolution, frame rate etc.

Problemi e considerazioniRequirements and considerations

  • I video di input devono contenere solo una traccia audio.Input videos should only have one audio track.
  • Tutti i video di input devono avere la stessa frequenza dei fotogrammi.Input videos should all have the same frame rate.
  • È necessario caricare i video in asset separati e impostare i video come file primario in ogni asset.You must upload your videos into separate assets and set the videos as the primary file in each asset.
  • È necessario conoscere la durata dei video.You need to know the duration of your videos.
  • Il seguente esempio di set di impostazioni presuppone che tutti i video di input inizino con un timestamp pari a zero.The preset examples below assumes that all the input videos start with a timestamp of zero. È necessario modificare i valori StartTime se i video hanno un timestamp iniziale diverso, come avviene in genere con gli archivi in tempo reale.You need to modify the StartTime values if the videos have different starting timestamp, as is typically the case with live archives.
  • Il set di impostazioni JSON fa riferimenti espliciti ai valori AssetID degli asset di input.The JSON preset makes explicit references to the AssetID values of the input assets.
  • Il codice di esempio presuppone che il set di impostazioni JSON sia stato salvato in un file locale, ad esempio "C:\supportFiles\preset.json".The sample code assumes that the JSON preset has been saved to a local file, such as "C:\supportFiles\preset.json". Presuppone anche che siano stati creati due asset caricando due file video e che si conoscano i valori AssetID risultanti.It also assumes that two assets have been created by uploading two video files, and that you know the resultant AssetID values.
  • Il frammento di codice e il set di impostazioni JSON mostrano un esempio di concatenazione di due file video.The code snippet and JSON preset shows an example of concatenating two video files. È possibile estendere la concatenazione a più di due video nel modo seguente:You can extend it to more than two videos by:

    1. Chiamando ripetutamente task.InputAssets.Add() per aggiungere più video in ordine.Calling task.InputAssets.Add() repeatedly to add more videos, in order.
    2. Effettuando le modifiche corrispondenti all'elemento "Sources" nel file JSON, aggiungendo altre voci nello stesso ordine.Making corresponding edits to the "Sources" element in the JSON, by adding more entries, in the same order.

Codice .NET.NET code

IAsset asset1 = _context.Assets.Where(asset => asset.Id == "nb:cid:UUID:606db602-efd7-4436-97b4-c0b867ba195b").FirstOrDefault();
IAsset asset2 = _context.Assets.Where(asset => asset.Id == "nb:cid:UUID:a7e2b90f-0565-4a94-87fe-0a9fa07b9c7e").FirstOrDefault();

// Declare a new job.
IJob job = _context.Jobs.Create("Media Encoder Standard Job for Concatenating Videos");
// 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");

// Load the XML (or JSON) from the local file.
string configuration = File.ReadAllText(@"c:\supportFiles\preset.json");

// Create a task
ITask task = job.Tasks.AddNew("Media Encoder Standard encoding task",
    processor,
    configuration,
    TaskOptions.None);

// Specify the input videos to be concatenated (in order).
task.InputAssets.Add(asset1);
task.InputAssets.Add(asset2);
// 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();

Set di impostazioni JSONJSON preset

Aggiornare il set di impostazioni personalizzate con gli ID degli asset che si vuole concatenare e l'intervallo di tempo appropriato per ogni video.Update your custom preset with ids of the assets that you want to concatenate, and with the appropriate time segment for each video.

{
  "Version": 1.0,
  "Sources": [
    {
      "AssetID": "606db602-efd7-4436-97b4-c0b867ba195b",
      "StartTime": "00:00:01",
      "Duration": "00:00:15"
    },
    {
      "AssetID": "a7e2b90f-0565-4a94-87fe-0a9fa07b9c7e",
      "StartTime": "00:00:02",
      "Duration": "00:00:05"
    }
  ],
  "Codecs": [
    {
      "KeyFrameInterval": "00:00:02",
      "SceneChangeDetection": true,
      "H264Layers": [
        {
          "Level": "auto",
          "Bitrate": 1800,
          "MaxBitrate": 1800,
          "BufferWindow": "00:00:05",
          "BFrames": 3,
          "ReferenceFrames": 3,
          "AdaptiveBFrame": true,
          "Type": "H264Layer",
          "Width": "640",
          "Height": "360",
          "FrameRate": "0/1"
        }
      ],
      "Type": "H264Video"
    },
    {
      "Channels": 2,
      "SamplingRate": 48000,
      "Bitrate": 128,
      "Type": "AACAudio"
    }
  ],
  "Outputs": [
    {
      "FileName": "{Basename}_{Width}x{Height}_{VideoBitrate}.mp4",
      "Format": {
        "Type": "MP4Format"
      }
    }
  ]
}

Ritagliare video con Media Encoder StandardCrop videos with Media Encoder Standard

Vedere l'argomento Ritagliare video con Media Encoder Standard .See the Crop videos with Media Encoder Standard topic.

Inserire una traccia video quando l'input non ha videoInsert a video track when input has no video

Per impostazione predefinita, se si invia al codificatore un input che contiene solo audio e nessun video, l'asset di output contiene file di soli dati audio.By default, if you send an input to the encoder that contains only audio, and no video, then the output asset contains files that contain only audio data. Alcuni lettori, tra cui Azure Media Player (vedere qui) potrebbero non essere in grado di gestire tali flussi.Some players, including Azure Media Player (see this) may not be able to handle such streams. In tal caso, è possibile usare questa impostazione per forzare l'aggiunta di una traccia video monocromatica all'output da parte del codificatore.You can use this setting to force the encoder to add a monochrome video track to the output in that scenario.

Nota

Forzando il codificatore a inserire una traccia video di output si accresce la dimensione dell'asset di output e perciò il costo sostenuto per l'attività di codifica.Forcing the encoder to insert an output video track increases the size of the output Asset, and thereby the cost incurred for the encoding Task. È necessario eseguire test per verificare che questo incremento abbia un impatto modesto sugli addebiti mensili.You should run tests to verify that this resultant increase has only a modest impact on your monthly charges.

Inserimento di video alla sola velocità in bit più bassaInserting video at only the lowest bitrate

Si supponga di usare un'impostazione di codifica a bitrate multipli, ad esempio "H264 bitrate multipli 720p" per codificare l'intero catalogo di input per lo streaming, che contiene una combinazione di file video e file di solo audio.Suppose you are using a multiple bitrate encoding preset such as "H264 Multiple Bitrate 720p" to encode your entire input catalog for streaming, which contains a mix of video files and audio-only files. In questo scenario, quando l'input non ha video, è opportuno forzare il codificatore a inserire una traccia video monocromatica solo alla velocità in bit più bassa, anziché inserire il video a tutte le velocità in bit.In this scenario, when the input has no video, you may want to force the encoder to insert a monochrome video track at just the lowest bitrate, as opposed to inserting video at every output bitrate. A tale scopo è necessario usare il flag InsertBlackIfNoVideoBottomLayerOnly.To achieve this, you need to use the InsertBlackIfNoVideoBottomLayerOnly flag.

È possibile usare uno dei set di impostazioni di Media Encoder Standard documentati in questa sezione e apportare la modifica seguente:You can take any of the MES presets documented in this section, and make the following modification:

Set di impostazioni JSONJSON preset

{
      "KeyFrameInterval": "00:00:02",
      "StretchMode": "AutoSize",
      "Condition": "InsertBlackIfNoVideoBottomLayerOnly",
      "H264Layers": [
      …
      ]
}

Set di impostazioni XMLXML preset

Se si usa XML, applicare Condition="InsertBlackIfNoVideoBottomLayerOnly" come attributo per l'elemento H264Video e Condition="InsertSilenceIfNoAudio" come attributo per l'elemento AACAudio.When using XML, use Condition="InsertBlackIfNoVideoBottomLayerOnly" as an attribute to the H264Video element and Condition="InsertSilenceIfNoAudio" as an attribute to AACAudio.

. . .
<Encoding>
  <H264Video Condition="InsertBlackIfNoVideoBottomLayerOnly">
    <KeyFrameInterval>00:00:02</KeyFrameInterval>
    <SceneChangeDetection>true</SceneChangeDetection>
    <StretchMode>AutoSize</StretchMode>
    <H264Layers>
      <H264Layer>
        . . .
      </H264Layer>
    </H264Layers>
    <Chapters />
  </H264Video>
  <AACAudio Condition="InsertSilenceIfNoAudio">
    <Profile>AACLC</Profile>
    <Channels>2</Channels>
    <SamplingRate>48000</SamplingRate>
    <Bitrate>128</Bitrate>
  </AACAudio>
</Encoding>
. . .

Inserimento di video a tutte le velocità in bit di outputInserting video at all output bitrates

Si supponga di usare un'impostazione di codifica a bitrate multipli, ad esempio "H264 bitrate multipli 720p" per codificare l'intero catalogo di input per lo streaming, che contiene una combinazione di file video e file di solo audio.Suppose you are using a multiple bitrate encoding preset such as "H264 Multiple Bitrate 720p to encode your entire input catalog for streaming, which contains a mix of video files and audio-only files. In questo scenario, quando l'input non ha video, è opportuno forzare il codificatore a inserire una traccia video monocromatica a tutte le velocità in bit di output.In this scenario, when the input has no video, you may want to force the encoder to insert a monochrome video track at all the output bitrates. In questo modo gli asset di output saranno tutti omogenei rispetto al numero di tracce video e tracce audio.This ensures that your output Assets are all homogenous with respect to number of video tracks and audio tracks. A tale scopo è necessario specificare il flag "InsertBlackIfNoVideo".To achieve this, you need to specify the "InsertBlackIfNoVideo" flag.

È possibile usare uno dei set di impostazioni di Media Encoder Standard documentati in questa sezione e apportare la modifica seguente:You can take any of the MES presets documented in this section, and make the following modification:

Set di impostazioni JSONJSON preset

{
      "KeyFrameInterval": "00:00:02",
      "StretchMode": "AutoSize",
      "Condition": "InsertBlackIfNoVideo",
      "H264Layers": [
      …
      ]
}

Set di impostazioni XMLXML preset

Se si usa XML, applicare Condition="InsertBlackIfNoVideo" come attributo per l'elemento H264Video e Condition="InsertSilenceIfNoAudio" come attributo per l'elemento AACAudio.When using XML, use Condition="InsertBlackIfNoVideo" as an attribute to the H264Video element and Condition="InsertSilenceIfNoAudio" as an attribute to AACAudio.

. . .
<Encoding>
  <H264Video Condition="InsertBlackIfNoVideo">
    <KeyFrameInterval>00:00:02</KeyFrameInterval>
    <SceneChangeDetection>true</SceneChangeDetection>
    <StretchMode>AutoSize</StretchMode>
    <H264Layers>
      <H264Layer>
        . . .
      </H264Layer>
    </H264Layers>
    <Chapters />
  </H264Video>
  <AACAudio Condition="InsertSilenceIfNoAudio">
    <Profile>AACLC</Profile>
    <Channels>2</Channels>
    <SamplingRate>48000</SamplingRate>
    <Bitrate>128</Bitrate>
  </AACAudio>
</Encoding>
. . .  

Ruotare un videoRotate a video

Il codificatore multimediale standard supporta la rotazione in base ad angoli di 0/90/180/270.The Media Encoder Standard supports rotation by angles of 0/90/180/270. Il comportamento predefinito è "Auto", che tenta di rilevare i metadati di rotazione nel file video in arrivo per la compensazione.The default behavior is "Auto", where it tries to detect the rotation metadata in the incoming video file and compensate for it. Includere l'elemento Sources seguente in uno dei set di impostazioni definiti in questa sezione:Include the following Sources element to one of the presets defined in this section:

Set di impostazioni JSONJSON preset

"Sources": [
{
  "Streams": [],
  "Filters": {
    "Rotation": "90"
  }
}
],
"Codecs": [

...

Set di impostazioni XMLXML preset

<Sources>
       <Source>
      <Streams />
      <Filters>
        <Rotation>90</Rotation>
      </Filters>
    </Source>
</Sources>

Per altre informazioni sul modo in cui il codificatore interpreta le impostazioni di larghezza e altezza nei set di impostazioni quando è attivata la compensazione di rotazione, vedere questo argomento.Also, see this topic for more information on how the encoder interprets the Width and Height settings in the preset, when rotation compensation is triggered.

È possibile usare il valore "0" per indicare al codificatore di ignorare i metadati di rotazione, se presenti, nel video di input.You can use the value "0" to indicate to the encoder to ignore rotation metadata, if present, in the input video.

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:

Vedere ancheSee Also

Panoramica sulla codifica dei servizi multimedialiMedia Services Encoding Overview