About
Not all source flavors are generated into target flavors due to factors like low bitrate or small frame size. Kaltura’s ingestion logic optimizes flavor generation to preserve source quality and avoid redundancy, ensuring the best possible viewing experience.
Ingestion logic
Kaltura’s ingestion logic optimizes to avoid redundant flavors and preserve source quality. Only flavors meeting the following rules are generated:
There may be additional adjustments or exceptions to these rules.
Rule 1
The asset bitrate should not be higher than the source bitrate.
The video quality depends on the bitrate: higher bitrates generally mean better quality. Since the source quality is always higher than the output, the output bitrate should not exceed the source bitrate. Flavors with a higher bitrate than the source are filtered out.
Example
The source video bitrate is 600kbps. Flavors in the profile include 400, 600, 900, 1500, 2500, and 4000. The resulting entry includes only the 400 and 600 flavors; the rest are filtered out.
Additional factors considered:
- Content Aware encoding: Details at https://corp.kaltura.com/blog/implementing-content-aware-encoding-cae/.
- Source vs. flavor codec efficiency: Codecs vary in data compression ability, for example, HEVC/H265 is 50% more efficient than AVC/H264. Therefore, the source/flavor video bitrates are 'normalized' into the same 'scale'.
- If the source bitrate is over 20% lower than the flavor, the flavor bitrate is still considered. For example, a source of 3800kbps would generate the 4000 flavor.
Rule 2
At least one flavor will be generated with the source frame size.
Even if the source bitrate is lower, flavors matching the source frame size are generated to preserve quality. Downscaling reduces visual quality, so maintaining frame size is crucial.
Back to the example - The source video bitrate (vid.br) is 600kbps. The flavors included in the conversion profile are - 400/360p, 600/480p, 900/540p, 1500/720p, 2500/720p, 4000/1080p.
Let’s add additional data to this example. The source’s frame size is 1080p with 600kbps. For this case, the system will generate the flavor 400/360p and the 4000/1080p, but the last generated flavor will not use the bitrate as it is defined for 1080p flavor – aka 4000kbps, it will use 720kbps bitrate. This is an adaptation of the sources 600kbps bitrate. Please see the Rule 3.
Rule 3
Increase flavor bitrate by 20% of source bitrate
When generating a flavor with the source's bitrate, we aim to maintain quality by increasing the flavor's bitrate by 20%. This increase is limited by the flavor's maximum bitrate.
Back to the example: – The source bitrate is 600Kbps. It should be generated by the 4000kbps/1080p flavor. The transcoding logic will do the matching by increasing the video bitrate by 20% - 600 to 720.
Rule 4
Generate at least one flavor for each associated tag
When examining flavor parameters, we ensure at least one flavor is generated for every associated tag. A single flavor parameter can correspond to multiple tags.