human: 如何处理七牛云的智能多媒体服务多码率自适应转码（adapt）

gpt: [智能多媒体服务](https://developer.qiniu.com/dora) > API 文档 > 音视频处理 >多码率自适应转码（adapt）

#  多码率自适应转码（adapt）

最近更新时间: 2024-06-28 17:53:44

# **简介**

多码率自适应转码(adapt)用于对已经上传到七牛云的视频转码成包含多种码率的HLS视频流。以便能随着终端网络带宽的变化动态选择适应的码率播放。

# **接口规格**

**注意** ：接口规格不含任何空格与换行符，下列内容经过格式化以便阅读。

    
    
    adapt/<Format>
        /envBandWidth/<EnvBandWidth>
        /multiAb/<MultiAb>
        /multiVb/<MultiVb>
        /multiResolution/<MultiResolution>
        /multiPrefix/<MultiPrefix> 
        /vb/<VideoBitrate>
        /ab/<AudioBitrate>
        /resolution/<Resolution>
        /multiPrefix/<MultiPrefix> 
        /hlstime/<HlsTime>
        /wmImage/<Encodedkodocheme>
        /wmText/<EncodedText>
        /wmFont/<Font>
        /wmFontSize<FontSize>
        /wmFontColor/<FontColor>
        /wmBorderWidth/<BorderWidth>
        /wmBorderColor/<BorderColor>
        /wmGravity/<Gravity>
        /wmGravityText/<GravityText>
        /wmOffsetX/<offsetX>
        /wmOffsetY/<offsetY>
    

参数名称 | 类别 | 必填 | 说明  
---|---|---|---  
`<Format>` | V | 是 | 目前只支持m3u8，后续考虑支持dash等  
`/envBandWidth/<EnvBandWidth>` | V | 是 | 不同码流切换的带宽标准，采用符号`,`分隔多个网络带宽，个数范围[2,5]，取值范围[50000,30000000]，单位是b/s。注：个数与存在的multi参数值个数需要保持一致，建议与设置的码率值接近，带宽值采用升序方式。  
`/multiAb/<MultiAb>` | V | 否 | 与ab参数不共存，单位：比特每秒（bit/s），采用符号`,`分隔多个音频码率，个数范围[2,5]，例如64k,128k,256k。注：码率个数与其他存在的multi参数值个数需要保持一致，魔法变量$(origin)表示原音频码率。  
`/multiVb/<MultiVb>` | V | 否 | 与vb参数不共存，单位：比特每秒（bit/s），采用符号`,`分隔多个视频码率，个数范围[2,5]，例如128k,600k,1.25m。注：码率个数与其他存在的multi参数值个数需要保持一致，魔法变量$(origin)表示原视频码率。  
`/multiResolution/<MultiResolution>` | V | 否 | 与resolution参数不共存，分辨率格式为`w:h` ，vcodec 为libx265/libx264时，`w` 取值范围[20,8192]，`h` 取值范围[20,4320]。vcodec 取其他值时 `w` 取值范围[20,3840]，`h `取值范围[20,2160]，采用符号,分隔多个视频分辨率，个数范围[2,5]，例如 320:240,640:480,1080:720。注：会改变DAR，分辨率个数与其他存在的 multi 参数值个数需要保持一致，魔法变量$(origin)表示原视频分辨率。  
`/vb/<VideoBitRate>` | V | 否 | 视频比特率，单位：比特每秒（bit/s），常用视频比特率：128k, 1.25m, 5m 等。  
`/ab/<AudioBitRate>` | V | 否 | 单位：比特每秒（bit/s），常用码率：320k, 256k, 192k, 128k, 64k 等。  
`/resolution/<Resolution>` | V | 否 | 指定视频分辨率，格式为 w:h 或者预定义值，w取值范围[20,3840]，h取值范围[20,2160]。  
`/multiPrefix/<MultiPrefix> ` | V | 否 | 设置文件内的m3u8名称，同时该名称作为子m3u8的所有ts文件名的前缀。采用字符`,`分隔多个prefix，示例：/multiPrefix/cWluaXUtYQ==,cWluaXUtYg==，其中cWluaXUtYQ==是定义的第一个m3u8文件的前缀，是qiniu-a的URL安全的Base64编码，cWluaXUtYg==是定义的第二个m3u8文件的前缀，是qiniu-b的URL安全的Base64编码，每个子m3u8文件中的ts名称为`前缀名称-$(count).ts`，其中$(count)是六位占位符数字串，最后得到的结果中会有两个子m3u8，名称为qiniu-a.m3u8 (内部ts为qiniu-a_000000.ts,qiniu-a_000001.ts…)和 qiniu-b.m3u8(内部ts为qiniu-b_000000.ts,qiniu-b_000001.ts…)。  
`/hlstime/<HlsTime>` | V | 否 | 用于 HLS 自定义每一小段音/视频流的播放时间长度，取值范围为: 10 - 60 （秒），默认值为 10（单位:秒）。  
  
## **视频水印参数**

分类 | 参数名称 | 类别 | 必填 | 说明  
---|---|---|---|---  
**图片水印** | `/wmImage/<Encodedkodocheme>` | V | N | 1、图片水印的源路径，目前支持 kodo 资源。kodo 资源可由 `kodo://<bucketname>/<key>` 表示（此时 bucketname 需要与输入源在同一区域），均需要经过 `urlsafe_base64_encode`。  
2、支持的格式有：图片、部分动图（GIF、APNG）。  
**文字水印** | `/wmText/<EncodedText>` | V | N | 水印文本内容,需要经过`urlsafe_base64_encode`。  
| `/wmFont/<Font>` | V | N | 文本字体（详见支持[字体列表 __](https://developer.qiniu.com/dora/1379/image-and-video-text-watermarking-support-font-list)），需要经过`urlsafe_base64_encode`。存在`/wmText/`时生效。 注意：默认为方正黑体。  
| `/wmFontSize<FontSize>` | V | N | 水印文字大小，单位: px。存在`/wmText/`时生效，默认值为16px。  
| `/wmFontColor/<FontColor>` | V | N | 水印文字颜色，需要经过`urlsafe_base64_encode`，RGB格式，可以是颜色名称（例如red）或十六进制（例如#FF0000），参考[RGB颜色编码表 __](https://www.rapidtables.com/web/color/RGB_Color.html)。存在`/wmText/`时生效，默认为黑色。  
| `/wmBorderWidth/<BorderWidth>` | V | N | 水印文字描边宽度，单位：像素，取值范围[0,4096]。  
| `/wmBorderColor/<BorderColor>` | V | N | 水印文字描边颜色，需要经过`urlsafe_base64_encode`，RGB格式，可以是颜色名称（例如red）或十六进制（例如 #FF0000），参考[RGB颜色编码表 __](https://www.rapidtables.com/web/color/RGB_Color.html)。存在`/wmText/`时生效，默认为黑色  
**水印位置** | `/wmGravity/<Gravity>` | V | N | 视频或者图片水印位置。存在`/wmImage/` or `/wmVideo/`时生效。  
| `/wmGravityText/<GravityText>` | V | N | 文本位置，存在`/wmText/`时生效，默认 NorthEast。  
| `/wmOffsetX/<offsetX>` | V | N | 设置图片、文字、视频水印位置的相对横向偏移量，当值为正数时则向右偏移，反之向左。位置里包含West时，默认有+10的固定偏移，位置里包含East时，默认有-10的固定偏移，中间位置则固定偏移为0。  
| `/wmOffsetY/<offsetY>` | V | N | 设置图片、文字、视频水印位置的相对纵向偏移量，当值为正数时则向下偏移，反之向上。位置里包含North时，默认有+10的固定偏移，位置里包含South时，默认有-10的固定偏移，中间位置则固定偏移为0。  
  
**注意：**

  * 如需使用视频水印功能，请参考 [普通音视频转码 __](https://developer.qiniu.com/dora/api/1248/audio-and-video-transcoding-avthumb)的水印参数。
  * 转码操作若未指定音视频码率，转码结果的码率会小于等于原音视频码率，若指定码率大于原音视频码率，转码操作会使用原视频码率进行转码。
  * `adapt`转码的结果会保存在原文件的空间中，但是文件名按照默认规则生成，为了方便获取转码后资源链接，建议自定义处理结果资源的名称，请参考[处理结果另存 (saveas)](https://developer.qiniu.com/dora/api/processing-results-save-saveas)。

# **操作方式**

可以通过 [持久化处理 __](https://developer.qiniu.com/dora/1291/persistent-data-
processing-pfop)的方式来调用：

  * `资源上传时自动触发`：可以在上传时指定[persistentOps](https://developer.qiniu.com/kodo/manual/put-policy#put-policy-persistent-ops-explanation)参数
  * `对已有资源手动手动触发`：调用[pfop](https://developer.qiniu.com/dora/1245/multiple-rate-adaptive-transcoding-adapt)命令

# **示例**

  1. 源视频地址：<https://dora-doc.qiniu.com/4k.mp4>[ __](https://dora-doc.qiniu.com/4k.mp4)。

  2. 以 [持久化处理 __](https://developer.qiniu.com/dora/1291/persistent-data-processing-pfop)方式，使用 adapt 命令把源mp4视频转成包含如下四路HLS码流（分辨率：320*240 码率：200KB；分辨率：640*480 码率：1200KB；分辨率：1280*720 码率：6500KB；分辨率：1920*1080 码率：8500KB；）的自适应HLS码流：
    
        POST /pfop/ HTTP/1.1
      Host: api.qiniu.com  
      Content-Type: application/x-www-form-urlencoded  
      Authorization:  Qiniu <AccessToken>  
      bucket=publicbucket_z0&key=4k.mp4&fops=adapt/m3u8/multiResolution/320:240,640:480,1280:720,1920:1080/envBandWidth/200000,800000,1700000,2400000/multiVb/200k,1200k,6500k,8500k/hlstime/10
    

**注意** ：要在Authorization头部的前添加 **Qiniu** 和半角空格。

  3. 处理之后的自适应HLS码流地址：<https://dora-doc.qiniu.com/004.m3u8>[ __](https://dora-doc.qiniu.com/004.m3u8)

# **计费说明**

多码率自适应转码(adapt），服务价格=普通转码价格，定价参考 [智能多媒体服务定价
__](https://www.qiniu.com/prices/dora)。

以上内容是否对您有帮助？