设置视频拖拽
百度云支持对flv与mp4伪流视频的拖拽功能——视频进度条拖拽,开启拖拽可降低回源率,提升速度。本接口用于设置视频拖拽的参数。(注意:此接口为全量接口,设置时需要将已有的设置一并写入,否则原有配置会被覆盖。)
原理简介
-
MP4
百度智能云CDN支持MP4文件的伪流(pseudo-streaming)播放,通常这些文件拓展名为.mp4,.m4v,.m4a。
在一个典型的Flash播放器中(不同播放器可能不同),如果用户拖动进度条,播放器会发送一个HTTP(S)请求,并在该请求的查询参数中带有指定时间的参数(通常参数名为start,单位为秒),服务器响应以该时间开始的视频流。例如:
http://example.com/elephants_dream.mp4?start=238.88
。 类似的,您还可以指定结束时间(通常参数名为end,单位为秒),服务器会响应从start到end指定范围内的视频内容。例如:http://example.com/elephants_dream.mp4?start=238.88&end=555.55
。这使得您的Flash播放器可以依靠服务器实现进度条拖动功能。
-
FLV
百度智能云CDN同样支持Flash Video(FLV)文件的伪流(pseudo-streaming)播放,通常这些文件拓展名为.flv。
FLV文件的伪流模式与MP4有所不同:FLV文件是通过文件字节偏移进行拖动的。
通常情况下(不同播放器可能不同),用户在FLash播放器中播放一个FLV文件,当用户拖动进度条时,播放器会发送一个HTTPS(S)请求,并在该请求的查询参数中携带指定文件字节偏移的参数(通常参数名为start,单位为字节),服务器根据配置会响应以两种不同的内容:
- byte模式:服务器响应以原始FLV文件从start指定字节开始的文件内容
- byteav模式:服务器在原始FLV文件以start指定字节开始的内容前添加上第一个Video Tag和Audio Tag(通常为Metadata)作为响应,该模式由于包含Metadata使得播放器的解码参数得以重设。
即byteav模式比byte模式要多响应两个Tag(Metadata)。
Method | Path | 说明 |
---|---|---|
PUT | /v2/domain/{domain}/config?mediaDrag | 设置视频拖拽的参数 |
domain:CDN加速域名
请求体(Request Body)
参数 | 可选 | 类型 | 说明 |
---|---|---|---|
mediaDragConf | 必选 | MediaDragConf | 视频拖拽的设置 |
MediaDragConf:
参数 | 可选 | 类型 | 说明 |
---|---|---|---|
mp4 | 可选 | MediaDrag | mp4类型伪流的拖拽设置,如果是取消设置,请不要带上这个字段 |
flv | 可选 | MediaDrag | flv类型伪流的拖拽设置,如果是取消设置,请不要带上这个字段 |
MediaDrag:
参数 | 可选 | 类型 | 说明 |
---|---|---|---|
fileSuffix | 可选 | list类型,元素类型为String | 百度智能云CDN支持MP4文件的伪流(pseudo-streaming)播放,通常这些文件拓展名为.mp4,.m4v,.m4a,因此这个fileSuffix值为文件拓展名集合,如: ["mp4", "m4v", "m4a"],type为mp4,fileSuffix默认值为["mp4"];type为flv,fileSuffix默认值为["flv"] |
startArgName | 可选 | String | start参数名称,默认为“start”,您可以自定义参数名称,但是要求不能和endArgName 相同 |
endArgName | 可选 | String | end参数名称,默认为“end”,您可以自定义参数名称,但是要求不能和startArgName 相同 |
dragMode | 必选 | string | mp4类型按秒进行拖拽,flv类型按字节进行拖拽。type为flv可选择的模式为“byteAV”或”byte”;type为mp4只能是"second"模式 |
响应码 (Http Status Code)
HTTP Status Code | 说明 |
---|---|
200 | 成功 |
400 | 更新失败,参数错误等 |
请求示例1
PUT /v2/domain/myself.baidu.com/config?mediaDrag HTTP/1.1
Host: cdn.baidubce.com
Content-Length: 130
Content-Type: application/json
{
"mediaDragConf":{
"mp4":{
"fileSuffix":[
"mp4",
"m4a"
],
"startArgName":"startIndex",
"dragMode":"second"
},
"flv":{
"dragMode":"byteAV"
}
}
}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
{
"status":"RUNNING"
}
请求示例2 取消flv类型伪流的拖拽设置,保持mp4类型伪流的拖拽设置不变 此时请求体中不加flv参数,但是为保持mp4类型伪流的拖拽设置不变,请求体中的mp4参数一定要为当前该domain的mp4参数值一致(当前该domain的mp4参数值可以通过查询视频拖拽接口获取)。
PUT /v2/domain/myself.baidu.com/config?mediaDrag HTTP/1.1
Host: cdn.baidubce.com
Content-Length: 130
Content-Type: application/json
{
"mediaDragConf": {
"mp4": {
"fileSuffix": [
"mp4",
"m4a"
],
"startArgName": "startIndex",
"dragMode": "second"
}
}
}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
{
"status":"RUNNING"
}
请求示例3 修改mp4类型伪流的拖拽设置的dragMode设置项,保持flv类型伪流的拖拽设置不变 此时请求体中mp4参数的dragMode设置为目标值,mp4的其余参数保持和当前该domain的对应参数一致,否值会被覆盖为默认值。请求体中的flv参数一定要为当前该domain的mp4参数值一致)。
PUT /v2/domain/myself.baidu.com/config?mediaDrag HTTP/1.1
Host: cdn.baidubce.com
Content-Length: 130
Content-Type: application/json
{
"mediaDragConf":{
"mp4":{
"fileSuffix":[
"mp4",
"m4a"
],
"startArgName":"startIndex",
"dragMode":"second"
"dragMode":"--目标值---"
},
"flv":{
"dragMode":"byteAV"
}
}
}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
{
"status":"RUNNING"
}