[API] Open Channel
http://localhost:8800/channel/open
描述
透過Post方式開啟一個Channel,可指定該Channel的串流來源及偵測設定,該API適用於不善於接影像串流的開發者或較簡單流程的開發者。因為在完成設定之後,Local API Server會透過WebSocket方式單項傳送偵測結果給Client端。
參數
"url"
- 欲開啟本地視訊WebCam,請輸入localcamera/#(0~10);可先調用(channel/query/device_list),Local API Server會回傳可開啟的WebCam裝置。IPCam請輸入該url便可。
"settings"
- 串流功能設定(JSON格式,相關參數如下)
[Camera]
- camera.width - Camera的影像寬度,預設為640
- camera.height - Camera的影像高度,預設為480
- camera.quality - 串流回傳的影像品質,預設為30 (0~100)
- camera.fps -
視訊串流FPS,預設為10 (0~20)(暫無支援) - camera.send_image - 回傳值是否帶有影像資訊,預設為true
- camera.compress - 回傳資料是否壓縮,預設為true
- camera.vlc_params - VLC參數設定(可參考Document->Parameters)
[Face]
- face.detection.enable - 是否使用人臉偵測功能,預設為true
- face.detection.tracking - 是否開啟追蹤人臉功能,預設為true
- face.detection.max_size - 人臉偵測允許最大人臉大小(pixel),預設為8192 (min_size~8192)
- face.detection.min_size - 人臉偵測允許最小人臉大小(pixel),預設為40 (20~max_size)
- face.detection.age - 是否偵測年齡,預設為true
- face.detection.gender - 是否偵測性別,預設為true
- face.detection.express - 是否偵測表情,預設為true
- face.detection.threshold - 人臉偵測的門檻值,預設為500 (0~1000)
- face.detection.filter.enable - 是否開啟過濾功能,預設為false
- face.detection.filter.type - 過濾類型,0為時間(毫秒)、1為frame數,預設為0
- face.detection.filter.times - 過濾人臉出現的時間(毫秒),預設為3000(0~20000)
- face.detection.filter.frames - 過濾人臉出現的frame數,預設為0 (0~500)
- face.identification.enable - 是否開啟辨識功能,預設為false
- face.identification.group_id - 使用辨識功能時需要指定group_id才會去辨識是否為此group的人,預設為空值
- face.identification.mode - 辨識模式,1 = Manual Mode(每張圖都會辨識);2 = Auto Mode(自動篩選適合辨識的時機)
- face.identification.max_result - 回傳的最大結果數,預設為3 (1~10)
[Human]
- human.detection.enable - 是否使用人形偵測功能,預設為false
- human.detection.tracking - 是否開啟追蹤人形功能,預設為true
- human.detection.max_size - 人形偵測允許最大人臉大小(pixel),預設為8192 (min_size~8192)
- human.detection.min_size - 人形偵測允許最小人臉大小(pixel),預設為40 (20~max_size)
{
"camera":
{
"width":640,
"height":480,
"quality":30,
"fps":10,
"send_image":true,
"compress":true,
"vlc_params": ['-I', 'dummy', '--ignore-config']
},
"face":
{
"detection":
{
"enable":true,
"tracking":true,
"max_size":8192,
"min_size":40,
"age":true,
"gender":true,
"express":true,
"threshold": 500,
"filter":
{
"enable": true,
"type": 0,
"times": 3000,
"frames": 45
}
},
"identification":
{
"enable":false,
"group_id":"GROUPID",
"mode":2,
"max_result":3
}
},
"human":
{
"detection":
{
"enable":false,
"tracking":true,
"max_size":8192,
"min_size":40
}
}
}
回傳值
"channel_id"
- 串流頻道的唯一ID。
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
- STATE_REQUEST_METHOD_ERROR Request方式不是使用POST
- STATE_PARAMETER_ERROR Request少給參數或給錯參數
- STATE_PROCESS_ERROR 建立Channel發生錯誤
JSON格式
{
"channel_id":"E4B94195-ACF4-4BC8-9594-EAD5834F3793",
"state":1000
}
[API] Close Channel
http://localhost:8800/channel/close
描述
關閉指定Channel。
參數
"channel_id"
- 欲關閉的串流ID
回傳值
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
- STATE_REQUEST_METHOD_ERROR Request方式不是使用POST
- STATE_PARAMETER_ERROR Request少給參數或給錯參數
- STATE_PROCESS_ERROR 關閉Channel發生錯誤
JSON格式
{
"state":1000
}
[API] Get Channel Infomation
http://localhost:8800/channel/info/get
描述
取得指定Channel的資訊。
參數
"channel_id"
欲查詢的channel_id,用逗點隔開,可一次查詢多個。
回傳值
"channel_id"
- 查詢完成的串流ID。
"url"
- 串流的來源URL。
"connect number"
- 已連接的Web Socket數量。
"fps"
- 串流的fps。
"height"
- 串流的影像解析度的高。
"width"
- 串流的影像解析度的寬。
"quality"
- 串流回傳的影像品質。
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
- STATE_REQUEST_METHOD_ERROR Request方式不是使用POST
- STATE_PARAMETER_ERROR Request少給參數或給錯參數
- STATE_PROCESS_ERROR 取得Channel資訊發生錯
JSON格式
{
"channels":[{
"channel_id":"5B1F6DA0-9C43-42E0-AC56-449E0B4F7807",
"info":{
"connect number":0,
"fps":15,
"height":480,
"quality":70,
"url":"localcamera/0",
"width":640
}
}],
"state":1000
}
[API] Query Channel List
http://localhost:8800/channel/query/channel_list
描述
查詢Local API Server中所有的Channel列表資訊。
參數
回傳值
"channel_id"
- 查詢完成的串流ID。
"url"
- 串流的來源URL。
"connect number"
- 已連接的Web Socket數量。
"fps"
- 串流的fps。
"height"
- 串流的影像解析度的高。
"width"
- 串流的影像解析度的寬。
"quality"
- 串流回傳的影像品質。
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
- STATE_REQUEST_METHOD_ERROR Request方式不是使用POST
- STATE_PARAMETER_ERROR Request少給參數或給錯參數
JSON格式
{
"channels":[{
"channel_id":"5B1F6DA0-9C43-42E0-AC56-449E0B4F7807",
"info":{
"connect number":0,
"fps":15,
"height":480,
"quality":70,
"url":"localcamera/0",
"width":640
}
},
{
"channel_id":"8BE8D791-DA6F-4E87-848C-0337D55C8925",
"info":{
"connect number":1,
"fps":15,
"height":1024,
"quality":50,
"url":"localcamera/1",
"width":768
}
}],
"state":1000
}
[API] Get Device Infomation
http://localhost:8800/channel/device/info/get
描述
查詢WebCam的所有解析度資訊。
參數
"url"
- 欲查詢的裝置url。
回傳值
"resolutions"
- 該裝置URL的所有解析度。
"url"
- 串流的來源URL。
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
- STATE_REQUEST_METHOD_ERROR Request方式不是使用POST
- STATE_PARAMETER_ERROR Request少給參數或給錯參數
- STATE_PROCESS_ERROR 取得視訊裝置相關資訊發生錯誤
JSON格式
{
"resolutions":
[
[160,120],
[320,240],
[640,480],
[1024,768]
],
"state":1000,
"url":"localcamera/1"
}
[API] Query Device List
http://localhost:8800/channel/query/device_list
描述
查詢Local API Server中所有可用的本地視訊裝置。
參數
回傳值
"url"
- 串流裝置的URL。
"name"
- 裝置名稱。
"state"
- 回傳狀態
- STATE_SUCCESSFUL 執行成功
- STATE_FAIL 尚未分類的錯誤
JSON格式
{
"devices":
[{
"name":"",
"url":"localcamera/0"
},
{
"name":"",
"url":"localcamera/1"
}],
"state":1000
}
[WebSocket] Connect WebSocket
ws://localhost:4662
描述
透過websocket與Local API Server溝通。如有修改WebSocket的port,請自行更換連線的port。
[WebSocket] Open Channel with WebSocket
描述
使用WebSocket方式傳送channel_id給Local API Server,透過Web Socket接收到的資料形態是Binary Data,如果有選擇壓縮的選項必須使用Zlib解壓縮。
Send Message的格式如下:
JSON格式
{
"channel_id":"6BB47C7D-C098-4EB4-9678-B7A4045C0A1A"
}
[WebSocket] Listen with WebSocket
描述
當傳送給Local API Server欲連線的channel_id後,Server會持續回傳結果。
回傳值
"state"
- 1表示串流正常,0表示串流來源已經斷線(目前支援IP Cam)。
斷線的情況如下:
1. 一開始就連不上Camera
2. 連線中Camera斷線
連接Web Socket時,請先判斷State的值是否為1以確定Camera狀態。
伺服器回傳的JSON格式
{
"bodys": [{
"angleLeftRight": 1,
"angleRoll": 7,
"detectPos": [
[139, 383],
[907, 383],
[907, 1151],
[139, 1151]
],
"human_id": "42780824c8ff4906913c095cbc4941f2",
"human_track_id": 0
}],
"faces": [{
"age": 28,
"angleLeftRight": 1,
"angleRoll": 7,
"angleUpDown": 3,
"detectPos": [
[139, 383],
[907, 383],
[907, 1151],
[139, 1151]
],
"expression": "neutral",
"face_track_id": 0,
"featureScore": 680,
"featureData": "BASE64_STRING"
"gender": 1,
"points": {
"leftEye": {
"x": -1,
"y": -1
},
"mouth": {
"x": -1,
"y": -1
},
"nose": {
"x": -1,
"y": -1
},
"rightEye": {
"x": -1,
"y": -1
}
}
}],
"state": 1,
"image_base64": "",
"image_size": 0
}