Coderen met een aangepaste transformatie - REST
Zoekt u Media Services v2-documentatie?
Wanneer u codeert met Azure Media Services, kunt u snel aan de slag met een van de aanbevolen ingebouwde voorinstellingen, op basis van aanbevolen procedures voor de branche, zoals wordt gedemonstreerd in de zelfstudie Streaming-bestanden. U kunt ook een aangepaste voorinstelling maken die is gericht op uw specifieke scenario of apparaatvereisten.
Waarschuwing
Het is niet raadzaam om de REST API voor Media Services rechtstreeks in uw eigen bibliotheekcode te verpakken. Als u dit voor productiedoeleinden goed doet, moet u de volledige logica voor opnieuw proberen van Azure Resource Management implementeren en inzicht krijgen in het beheren van langlopende bewerkingen in Azure Resource Management-API's. Dit wordt automatisch afgehandeld door de client-SDK's voor verschillende talen ( .NET, Java, TypeScript, Python, Ruby, enzovoort) en vermindert de kans dat u problemen hebt met rety-logica of mislukte API-aanroepen. De client-SDK's verwerken dit allemaal al voor u. De Postman-verzameling wordt meer aangeboden als een onderwijshulpprogramma en om u te laten zien wat de client-SDK's daadwerkelijk op de kabel doen tijdens de ontwikkeling met de verschillende client-SDK's.
Overwegingen
Bij het maken van aangepaste voorinstellingen zijn de volgende overwegingen van toepassing:
- Alle waarden voor hoogte en breedte voor AVC-inhoud moeten een veelvoud van 4 zijn.
- In Azure Media Services v3 zijn alle coderingsbitrates in bits per seconde. Dit verschilt van de voorinstellingen met onze v2-API's, die kilobits/seconde als eenheid hebben gebruikt. Als de bitrate in v2 bijvoorbeeld is opgegeven als 128 (kilobits/seconde), wordt deze in v3 ingesteld op 128000 (bits per seconde).
Vereisten
- Een Azure Media Services-account maken.
Vergeet niet de naam van de resourcegroep en de Media Services accountnaam. - Configureer Postman voor het Azure Media Services REST API aanroepen.
Zorg ervoor dat u de laatste stap in het onderwerp Azure AD-token krijgen volgt.
Een aangepaste voorinstelling definiƫren
In het volgende voorbeeld wordt de aanvraag body van een nieuwe transformatie definieert. We definiƫren een set uitvoer die we willen genereren wanneer deze transformatie wordt gebruikt.
In dit voorbeeld voegen we eerst een AacAudio-laag toe voor de audiocoderen en twee H264Video-lagen voor de videocoderen. In de videolagen wijzen we labels toe, zodat ze kunnen worden gebruikt in de namen van het uitvoerbestand. Vervolgens willen we dat de uitvoer ook miniaturen bevat. In het onderstaande voorbeeld geven we afbeeldingen op in PNG-indeling, gegenereerd op 50% van de resolutie van de invoervideo en op drie tijdstempels: {25%, 50%, 75} van de lengte van de invoervideo. Ten laatste geven we de indeling voor de uitvoerbestanden op: een voor video en audio en een voor de miniaturen. Omdat we meerdere H264Layers hebben, moeten we macro's gebruiken die unieke namen per laag produceren. We kunnen een macro of {Label} {Bitrate} gebruiken. In het voorbeeld ziet u de eerstgenoemde.
{
"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}"
}
]
}
}
]
}
}
Een nieuwe transformatie maken
In dit voorbeeld maken we een transformatie die is gebaseerd op de aangepaste voorinstelling die we eerder hebben gedefinieerd. Wanneer u een transformatie maakt, moet u eerst Get gebruiken om te controleren of er al een bestaat. Als de transformatie bestaat, gebruikt u deze opnieuw.
Selecteer in de verzameling van Postman die u hebt gedownload Transformaties en taken -> Maken of Transformatie bijwerken.
De HTTP-aanvraagmethode PUT is vergelijkbaar met:
PUT https://management.azure.com/subscriptions/:subscriptionId/resourceGroups/:resourceGroupName/providers/Microsoft.Media/mediaServices/:accountName/transforms/:transformName?api-version={{api-version}}
Selecteer het tabblad Body en vervang de hoofdcode door de JSON-code die u eerder hebt gedefinieerd. Als Media Services transformatie wilt toepassen op de opgegeven video of audio, moet u een taak verzenden onder die transformatie.
Selecteer Verzenden.
Als Media Services transformatie wilt toepassen op de opgegeven video of audio, moet u een taak verzenden onder die transformatie. Zie Zelfstudie: Videobestandenstreamen - REST voor een volledig voorbeeld van het verzenden van een taak onder een transformatie.
Volgende stappen
Andere REST-bewerkingen bekijken