自定义清晰度列表,默认null, 如果有值 sdk 内部不在进行获取, 为 null 使用接口获取的清晰度列表, videoLevelList.length === 0 不展示清晰度控件 sdk 内部不在进行获取, videoLevelList.length > 0 展示控件 sdk 内部不在进行获取 (v8.1.10版本及以上支持)
清晰度支持七种: 0: 流畅; 1: 标清; 2: 高清; 3: 超清; 4: 极清; 5: 3K; 6: 4K
interface VideoLevel{
/**
* 清晰度 0 | 1 | 2 | 3| 4 | 5 | 6 | number
*
* level 需要是唯一的
*
* 当 level 的值小于 0时, 不在向设备发送指令,仅根据 streamTypeIn 切换码流 (请保证 streamTypeIn 对应的码流存在)
*/
level: number,
/** 名称 */
name: string,
/** 1: 主码流, 2: 子码流 (仅支持这两种)*/
streamTypeIn: 1 | 2
/** 如果 type === 'compatible' 代表兼容模式,兼容模式下 streamTypeIn 默认为 1, 因为 */
type?: 'compatible' | undefined,
}请求 http 接口查询:[/api/service/device/capacity/video/quality]
curl 'https://open.ys7.com/api/service/device/capacity/video/quality?accessToken=at.9uoaxo0k3e5dinq8bretm18e5l37k1l6-26lx1qcvcc-1neesaz-kh9hqvqc3&deviceSerial=BC7799091&channelNo=1' \
-H 'Accept: */*' \
-H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Origin: http://127.0.0.1:8081' \
-H 'Pragma: no-cache' \
-H 'Referer: http://127.0.0.1:8081/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: cross-site' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' \
-H 'sec-ch-ua: "Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"'{
"meta": {
"code": 200,
"message": "操作成功",
"moreInfo": null
},
"data": [
{
"id": 7293450,
"channelNo": 1,
/** 清晰度 2 高清, 对应level */
"videoLevel": 2,
"cameraType": "CS-C6Wi-8D8W2DF",
/** 1: 主码流, 2: 子码流 (仅支持这两种)*/
"streamTypeIn": 2,
"streamType": 1,
"resolution": 19,
"picQuality": 2,
"bitRateType": 0,
"videoBitRate": 15,
"maxBitRate": 0,
"videoFrameRate": 14,
"intervalBPFrame": 2,
"intervalFrameI": 60,
"encodeComplex": 1
},
{
"id": 7293452,
"channelNo": 1,
/** 清晰度 3 超清 对应level */
"videoLevel": 3,
"cameraType": "CS-C6Wi-8D8W2DF",
/** 1: 主码流, 2: 子码流 (仅支持这两种)*/
"streamTypeIn": 1,
"streamType": 1,
"resolution": 27,
"picQuality": 2,
"bitRateType": 0,
"videoBitRate": 17,
"maxBitRate": 0,
"videoFrameRate": 14,
"intervalBPFrame": 2,
"intervalFrameI": 60,
"encodeComplex": 1
},
{
"id": 7293454,
"channelNo": 1,
/** 清晰度 4 极清 对应level */
"videoLevel": 4,
"cameraType": "CS-C6Wi-8D8W2DF",
/** 1: 主码流, 2: 子码流 (仅支持这两种)*/
"streamTypeIn": 1,
"streamType": 1,
"resolution": 70,
"picQuality": 2,
"bitRateType": 0,
"videoBitRate": 21,
"maxBitRate": 0,
"videoFrameRate": 14,
"intervalBPFrame": 2,
"intervalFrameI": 60,
"encodeComplex": 1
},
{
"id": 7344044,
"channelNo": 1,
/** 清晰度 6 4K 对应level */
"videoLevel": 6,
"cameraType": "CS-C6Wi-8D8W2DF",
/** 1: 主码流, 2: 子码流 (仅支持这两种)*/
"streamTypeIn": 1,
"streamType": 1,
"resolution": 64,
"picQuality": 2,
"bitRateType": 0,
"videoBitRate": 22,
"maxBitRate": 4096,
"videoFrameRate": 14,
"intervalBPFrame": 2,
"intervalFrameI": 60,
"encodeComplex": 1
}
]
}/**
* streamTypeIn: 1 | 2 // 1-主码流,2-子码流
* 能力集没有报备的都默认使用主码流,防止没有子码流
*/
export const VIDEO_LEVEL = [
{
level: 1, // 8.1.17 开始 当 level 的值小于 0时, 不在向设备发送指令,仅根据 streamTypeIn 切换码流 (请保证 streamTypeIn 对应的码流存在)
streamTypeIn: 1, // 1-主码流,2-子码流
type: 'compatible',
},
{
level: 2, // 8.1.17 开始 当 level 的值小于 0时, 不在向设备发送指令,仅根据 streamTypeIn 切换码流 (请保证 streamTypeIn 对应的码流存在)
streamTypeIn: 1, // 1-主码流,2-子码流
type: 'compatible',
},
];如果开发者想自定义清晰度列表或设备没有上报能力集,但是设备型号本身支持可以进行自定义, 如下
// >= v8.1.2 ESM
import { EZUIKitPlayer } from "ezuikit-js";
const player = new EZUIKitPlayer({
// ...
videoLevelList: [
{ level: 1, name: "标清", streamTypeIn: 2 }, // 需要保证支持子码流
{ level: 2, name: "高清", streamTypeIn: 1 },
],
})level 不存在,取流则取码流对应的上一次设置的 level 值的流。
level 的值在对应的码流中不存在, 但是这样同一种码流进行清晰度切换就没有变化了,具体可以根据业务进行自行调整。