Using Per-Title Encoding efficiently

Each video is unique, which makes selecting statis codec settings for all of your transcoding very inefficient. Using Per-Title Encoding, Qencode will analyze you file and choose the best codec settings for each scene of your video to get the best quality at the smallest file size. This is a great feature for highly varied or user genegrated content. This tutorial will teach you the best practices for getting the most out of Per-Title Encoding.

Warning
This feature is currently only available for output videos using the H.264 codec.

Getting started with Per-Title Encoding

To start, use the

/v1/start_encode2
method to set up your transcoding task and general settings. You can follow our Getting Started tutorial for a full walkthrough on how to set a basic transcoding task up.

To enable Per-Title Encoding, set

optimize_bitrate
= 1 on the
format
object level of your
/v1/start_encode2
request.

{
	"query": {
    "source": "https://nyc3.s3.qencode.com/qencode/bbb_30s.mp4",
    "format": [
      {
        "output": "mp4",
        "optimize_bitrate": 1,
      }
    ]
  }
}

Optimizing Per-Title Encoding Settings

Sometimes you want to push the base settings of the optimization more towards quality or compression based on the needs of your project. One way to do this is to change CRF (Constant Rate Factor) value to increase quality (lower CRF values) or increase compression (higher CRF values). Per-Title Encoding selects your CRF automatically, however you still have control to adjust the tradeoff between quality or compression

Use the

adjust_CRF
parameter on the
format
object level to offset the CRF value selected to be higher or lower depending on the needs of each individual
output
and
size
.

adjust_crfInteger between -10 and 10. Default 0.
Changes the selected CRF to be higher or lower, depending if the user prefers smaller files or higher quality respectively.

If you want the CRF values that can be selected to a specific range, you can set a

min_crf
and
max_crf
to limit the Minimum CRF and Maximum CRF selected for each segment.

min_crfInteger 0 - 51.
The lowest possible CRF that will be selected.
max_crfInteger 0 - 51.
The highest possible CRF that will be selected.

Now you're ready to get started. Here's an example of what your request would look like with all of the parameters outlined above:

{
	"query": {
    "source": "https://nyc3.s3.qencode.com/qencode/bbb_30s.mp4",
    "format": [
      {
        "output": "mp4",
        "optimize_bitrate": 1,
        "adjust_crf": "-1",
        "min_crf": "21",
        "max_crf": "51"
      }
    ]
  }
}