Koda med en anpassad transformering – REST
Letar du efter Media Services v2-dokumentation?
När du kodar med Azure Media Services kan du snabbt komma igång med någon av de rekommenderade inbyggda förinställningarna, baserat på branschens bästa praxis, som visas i självstudien Om strömmande filer. Du kan också skapa en anpassad förinställning som riktar sig mot ditt specifika scenario eller dina enhetskrav.
Varning
Vi rekommenderar inte att du försöker omsluta REST API för Media Services direkt i din egen bibliotekskod. Om du gör det i produktionssyfte måste du implementera den fullständiga omprövningslogiken för Azure Resource Management och förstå hur du hanterar långvariga åtgärder i Azure Resource Management-API:er. Detta hanteras av klient-SDK:er för olika språk – .NET, Java, TypeScript, Python, Ruby osv. – automatiskt och minskar risken för att du får problem med logik för omtrering eller misslyckade API-anrop. Alla klient-SDK:er hanterar detta åt dig redan. Postman-samlingen tillhandahålls mer som ett undervisningsverktyg och för att visa dig vad klient-SDK:erna faktiskt gör på kabeln under utvecklingen med de olika klient-SDK:erna.
Överväganden
När du skapar anpassade förinställningar gäller följande:
- Alla värden för höjd och bredd i AVC-innehåll måste vara en multipel av 4.
- I Azure Media Services v3 är alla kodningsbithastigheter i bitar per sekund. Detta skiljer sig från förinställningarna med våra v2 API:er, som använde kilobitar per sekund som enhet. Om bithastighet i v2 till exempel angavs som 128 (kilobitar/sekund) i v3 skulle den anges till 128 000 (bitar/sekund).
Förutsättningar
- Skapa ett Media Services konto.
Kom ihåg resursgruppens namn och namnet på Media Services konto. - Konfigurera Postman för Azure Media Services REST API anropar.
Se till att följa det sista steget i avsnittet Hämta Azure AD-token.
Definiera en anpassad förinställning
I följande exempel definieras begärandetexten för en ny transformering. Vi definierar en uppsättning utdata som vi vill ska genereras när transformeringen används.
I det här exemplet lägger vi först till ett AacAudio-lager för ljudkodningen och två H264Video-skikt för videokodningen. I videoskikten tilldelar vi etiketter så att de kan användas i utdatafilnamnen. Därefter vill vi att utdata även ska innehålla miniatyrbilder. I exemplet nedan anger vi bilder i PNG-format, genererade med 50 % av upplösningen för indatavideon och vid tre tidsstämplar – {25 %, 50 %, 75} av längden på indatavideon. Slutligen anger vi formatet för utdatafilerna – en för video + ljud och en annan för miniatyrbilderna. Eftersom vi har flera H264Layers måste vi använda makron som producerar unika namn per lager. Vi kan antingen använda {Label} ett - {Bitrate} eller -makro. Exemplet visar det första.
{
"properties": {
"description": "Basic Transform using a custom encoding preset",
"outputs": [
{
"onError": "StopProcessingJob",
"relativePriority": "Normal",
"preset": {
"@odata.type": "#Microsoft.Media.StandardEncoderPreset",
"codecs": [
{
"@odata.type": "#Microsoft.Media.AacAudio",
"channels": 2,
"samplingRate": 48000,
"bitrate": 128000,
"profile": "AacLc"
},
{
"@odata.type": "#Microsoft.Media.H264Video",
"keyFrameInterval": "PT2S",
"stretchMode": "AutoSize",
"sceneChangeDetection": false,
"complexity": "Balanced",
"layers": [
{
"width": "1280",
"height": "720",
"label": "HD",
"bitrate": 3400000,
"maxBitrate": 3400000,
"bFrames": 3,
"slices": 0,
"adaptiveBFrame": true,
"profile": "Auto",
"level": "auto",
"bufferWindow": "PT5S",
"referenceFrames": 3,
"entropyMode": "Cabac"
},
{
"width": "640",
"height": "360",
"label": "SD",
"bitrate": 1000000,
"maxBitrate": 1000000,
"bFrames": 3,
"slices": 0,
"adaptiveBFrame": true,
"profile": "Auto",
"level": "auto",
"bufferWindow": "PT5S",
"referenceFrames": 3,
"entropyMode": "Cabac"
}
]
},
{
"@odata.type": "#Microsoft.Media.PngImage",
"stretchMode": "AutoSize",
"start": "25%",
"step": "25%",
"range": "80%",
"layers": [
{
"width": "50%",
"height": "50%"
}
]
}
],
"formats": [
{
"@odata.type": "#Microsoft.Media.Mp4Format",
"filenamePattern": "Video-{Basename}-{Label}-{Bitrate}{Extension}",
"outputFiles": []
},
{
"@odata.type": "#Microsoft.Media.PngFormat",
"filenamePattern": "Thumbnail-{Basename}-{Index}{Extension}"
}
]
}
}
]
}
}
Skapa en ny transformering
I det här exemplet skapar vi en transformering som baseras på den anpassade förinställning som vi definierade tidigare. När du skapar en transformering bör du först använda Hämta för att kontrollera om det redan finns en. Om transformering finns återanvänder du den.
I Postman-samlingen som du laddade ned väljer du Transformeringar och jobb Skapa -> eller Uppdatera transformering.
METODEN FÖR HTTP-begäran i PUT liknar:
PUT https://management.azure.com/subscriptions/:subscriptionId/resourceGroups/:resourceGroupName/providers/Microsoft.Media/mediaServices/:accountName/transforms/:transformName?api-version={{api-version}}
Välj fliken Brödtext och ersätt brödtexten med den json-kod som du definierade tidigare. För Media Services vill tillämpa transformeringen på den angivna videon eller ljudfilen måste du skicka ett jobb under den transformeringen.
Välj Skicka.
För Media Services vill tillämpa transformeringen på den angivna videon eller ljudfilen måste du skicka ett jobb under den transformeringen. Ett komplett exempel som visar hur du skickar ett jobb under en transformering finns i Självstudie: Strömma videofiler – REST.