I'm adopting Azure Media Services SDK v3, and I'm facing one problem with new Transform concept.
Let's say I need to transcode an input video into a multi-bitrate asset:
to be able to stream this video later on. However, if original input resolution is less then 1080p (for example, 720p), I don't need to generate 1080p version.
In v2 SDK it was simple - just don't pass 1080p as target quality into video preset. But it looks like for v3 SDK I will need to create 3 custom transforms:
And also it means that I need to know input video resolution in advance which I'd like to avoid. I still had to know it for v2 SDK, but it would be nice if AMS could do that for me.
It looks like a little redundant to have 3 transforms to me, but I don't see other options. Is there any?
I know that BuiltInStandardEncoderPreset
exists and, as the documentation says, it will generate only "available" qualities - exactly what I need, but with different (build-in?) bitrate values which are not suitable for me.
With both our v3 and v2 APIs, you would need to know the input resolution in advance in order to tell the Standard Encoder to produce the desired output layers. With v2, you would have to have 2 separate preset JSONs, for example - one for 1080p sources and another for 720p sources. In v3, as you have discovered, the presets are built into the Transforms - therefore you would need one Transform for 1080p sources and one for 720p.
We have a work item in our backlog that will enable customers to turn on/off output layers based on conditional flags. At this time, though, I do not have an ETA to share for this feature.
Please do reach out via amshelp@microsoft.com - our engineers would be interested to know more about your specific scenario where you appear to need higher bitrates at the lower resolutions.