Så här skapar du ett bildöverlägg

media services-logotyp v3


Letar du efter Media Services v2-dokumentation?

Media Services kan du överlägga en bild, en ljudfil eller en annan video ovanpå en video. Indata måste ange exakt en bildfil. Du kan ange en bildfil i JPG-, PNG-, GIF- eller BMP-format eller en ljudfil (till exempel en WAV-, MP3-, WMA- eller M4A-fil) eller en videofil i ett filformat som stöds.

Förutsättningar

    {
    "AadClientId": "",
    "AadEndpoint": "https://login.microsoftonline.com",
    "AadSecret": "",
    "AadTenantId": "",
    "AccountName": "",
    "ArmAadAudience": "https://management.core.windows.net/",
    "ArmEndpoint": "https://management.azure.com/",
    "Location": "",
    "ResourceGroup": "",
    "SubscriptionId": ""
    }

Om du inte redan är bekant med att skapa transformeringar rekommenderar vi att du slutför följande aktiviteter:

När du är bekant med Transformeringar laddar du ned överläggsexempel.

Exempel på förinställda överlägg

Klona den Media Services .NET-exempeldatabasen.

    git clone https://github.com/Azure-Samples/media-services-v3-dotnet.git

Navigera till lösningsmappen och starta Visual Studio Code eller Visual Studio 2019.

Det finns ett antal kodningsexempel i mappen VideoEncoding. Öppna projektet i mappen VideoEncoding/Encoding_OverlayImage för att komma igång med att lära dig hur du använder överlägg.

Exempelprojektet innehåller två mediefiler. En videofil och en logotypbild som ska överläggs ovanpå videon.

  • ignite.mp4
  • cloud.png

I det här exemplet skapar vi först en anpassad transformering som kan överlappa bilden ovanpå videon i metoden CreateCustomTransform. Med egenskapen Filter för StandardEncoderPreset tilldelar vi en ny filtersamling som innehåller inställningarna för videoöverlägg.

En VideoOverlay innehåller en egenskap med namnet InputLabel som krävs för att mappa från listan med jobbindatafiler som skickats till jobbet och hitta rätt indatakällfil som är avsedd att användas som överläggsbild eller video. När du skickar jobbet används samma etikettnamn för att matcha inställningen här i Transformera. I exemplet använder vi etikettnamnet "logo" som visas i strängkonstanten OverlayLabel.

Följande kodfragment visar hur transformering formateras för att använda ett överlägg.

new TransformOutput
                {
                    Preset = new StandardEncoderPreset
                    {
                        Filters = new Filters
                        {
                            Overlays = new List<Overlay>
                            {
                                new VideoOverlay
                                {
                                    InputLabel = OverlayLabel,   // same as the one used in the JobInput to identify which asset is the overlay image
                                    Position = new Rectangle( "1200","670") // left, top position of the overlay in absolute pixel position relative to the source videos resolution. 
    
                                }
                            }
                        },
                        Codecs = new List<Codec>
                        {
                            new AacAudio
                            {
                            },
                            new H264Video
                            {
                                KeyFrameInterval = TimeSpan.FromSeconds(2),
                                Layers = new List<H264Layer>
                                {
                                    new H264Layer
                                    {
                                        Profile = H264VideoProfile.Baseline,
                                        Bitrate = 1000000, // 1Mbps
                                        Width = "1280",
                                        Height = "720"
                                    },
                                    new H264Layer   // Adding a second layer to see that the image also is scaled and positioned the same way on this layer. 
                                    {
                                        Profile = H264VideoProfile.Baseline,
                                        Bitrate = 600000, // 600 kbps
                                        Width = "480",
                                        Height = "270"
                                    }
                                }
                            }
                        },
                        Formats = new List<Format>
                        {
                            new Mp4Format
                            {
                                FilenamePattern = "{Basename}_{Bitrate}{Extension}",
                            }
                        }
                    }
                }

När du skickar jobbet till transformeringen måste du först skapa de två indatatillgångarna.

  • Tillgång 1 – i det här exemplet är den första tillgången som skapas den lokala videofilen "ignite.mp4". Det här är videon som vi ska använda som bakgrund i den sammansatta videon och överlägg en logotypbild ovanpå.
  • Tillgång 2 – i det här exemplet innehåller den andra tillgången (som lagras i variabeln overlayImageAsset) den .png som ska användas för logotypen. Den här bilden placeras på videon under kodningen.

När jobbet skapas i metoden SubmitJobAsync skapar vi först en JobInput-matris med hjälp av ett listobjekt<> objekt. Listan innehåller referenser till de två källtillgångarna.

För att identifiera och matcha vilken indatatillgång som ska användas som överlägg i filtret som definierats i ovanstående transformering använder vi återigen "logotyp"-etikettnamnet för att hantera matchningen. Etikettnamnet läggs till i JobInputAsset för den .png bilden. Detta talar om för Transformera vilken tillgång som ska användas när överläggsåtgärden utförs. Du kan använda samma transformering på nytt med olika tillgångar som lagras i Media Services som innehåller olika logotyper eller grafik som du vill överlägga, och helt enkelt ändra tillgångsnamnet som skickas till jobbet, samtidigt som du använder samma etikettnamn "logotyp" för transformeringen så att det matchar det.

    // Add both the Video and the Overlay image assets here as inputs to the job.
    List<JobInput> jobInputs = new List<JobInput>() {
        new JobInputAsset(assetName: inputAssetName),
        new JobInputAsset(assetName: overlayAssetName, label: OverlayLabel)
    };

Kör exemplet genom att välja projektet i fönstret Kör och felsöka i Visual Studio Code. Exemplet matar ut förloppet för kodningsåtgärden och laddar slutligen ned innehållet till mappen /Output i antingen projektroten, eller om det är fullständigt Visual Studio detta finns i mappen /bin/Output.

Exemplet publicerar även innehållet för strömning och matar ut fullständiga URL:er för HLS, DASH och Smooth Streaming-manifestfil som kan användas i alla kompatibla spelare. Du kan också enkelt kopiera manifest-URL:en till Azure Media Player demo och klistra in url:en som slutar med /manifest i URL-rutan och sedan klicka på Uppdatera spelare.

API-referenser

Ytterligare .NET SDK-referenser

Nästa steg

Andra guider för att skapa en transformering: