您好,登錄后才能下訂單哦!
Version 3.6.500
Jan. 16, 2019
版權所有2019 云視睿博 NovelTV Inc. 保留所有權利。
<div STYLE="page-break-after: always;"></div>
遠程管理API提供一組接口,其他系統(如企業的業務管理系統、媒資管理系統、用戶管理系統、OA系統等)可以通過調用接口來查詢流媒體服務器的數據和更改流媒體服務器的配置,實現與流媒體服務器的集成。
閱讀本接口規范時,請首先認真閱讀《概述》章節(即本章節),然后在閱讀《登錄認證》章節,這兩個章節是必須閱讀的部分。其他章節根據需要選擇閱讀,例如要做轉碼集成,閱讀《文件管理》和《轉碼》章節即可。
本文檔定義的接口規范,對版本號大于等于3.6.500的流媒體服務器系統有效。
較低版本服務器,繼續使用對應版本的接口規范。
本規范中,流媒體服務器是通信的服務器端(簡稱“服務器”),調用接口的其他系統是通信客戶端(簡稱“客戶端”)。客戶端和服務器通過HTTP協議通信,客戶端使用HTTP Get向服務器發送請求,服務器返回json格式的業務數據或操作結果給客戶端。
接口的請求地址是個URL地址,每個接口URL地址都包括分組位置和請求參數,例如: http://ip/mserver/interface/appMgr/?request=get&token=123456
其中:
http://ip/mserver/interface/appMgr/ 是接口請求的URL位置,“ip”在實際請求中要替換成服務器的ip地址或域名。
http://ip/mserver/interface/ 代表流媒體服務器接口服務在Web上的部署的位置,要保持不變。
appMgr是接口的分組位置,流媒體服務器接口包括了多個分組位置,具體參見接口定義部分。
符號?后面是參數列表,以name=value的形式體現。
其中:
request參數是在所有接口中都要有的,該參數表明了請求業務的類型。
token參數提供一個安全認證符號給服務器,服務器用token來驗證客戶端的合法性,除了登錄驗證接口之外,其他接口都需要token參數。
有關URL地址的編碼規范,請參考HTTP 1.1規范。
服務器在收到接口請求后,首先判斷token的正確性,如果token錯誤,則返回認證錯誤的消息給客戶端。如果token正確,服務器返回json格式的文本內容給客戶端。返回給客戶端的json文本描述了服務器對請求的處理結果和響應數據。
客戶端必須首先通過身份認證才能繼續調用接口,在一個“挑戰—>應答”模式的身份認證過程中完成身份認證,認證通過后,服務器為客戶端分配一個臨時令×××token,在后續的請求中,token作為一項必選參數提供,服務器通過token識別用戶身份和驗證請求的合法性。
在沒有接口調用時,token的有效期為30分鐘,之后客戶端再調用接口時必須重新進行身份認證,獲取新的token。
為了確保一定的安全性,客戶端應妥善保存token值。
當URL請求參數值中包含URL地址保留字符時,應對參數值進行URL編碼。
具體參見“RFC2396: Uniform Resource Identifiers (URI): Generic Syntax”。
當請求參數包含中文字符時,應對中文字符采用UTF-8編碼。
本文檔在描述接口的URL地址時,如果沒有特殊說明,會省略掉URL前面的相同部分,從接口的分組位置開始描述。例如,http://ip/mserver/interface/appMgr/?request=get 簡化為 appMgr/?request=get。
在描述參數時,省略token參數的描述,在示例中也會省略。在實際調用中必須把token參數加上。
在對參數進行描述時,用【必選】表示該參數必須提供,用【可選】表示該參數可以省略,用【URL編碼】表示該參數需要進行URL編碼,【保留】表示該參數可以接受但尚未被使用。
返回的json消息數據結構具有嚴格的一致性,客戶端可以采用一致的接收和解析方式處理返回消息。
簡單消息
簡單的返回消息包含對請求的處理結果,結構如下:
{
"code":0,
"err_desc":""
}
其中:
code 為 0 表示處理成功,其它值表示處理失敗。
err_desc是對錯誤的描述,在code為0時err_desc會被省略。
特殊情況,在用戶認證的login1和login2接口中,err_desc具有特殊用途用法,具體參見接口描述。除這兩個接口之外,err_desc都表示錯誤描述。
帶業務數據的消息
有的返回消息除了包含處理結果信息,還包含業務數據記錄集,結構如下:
{
"code":0,
"data":{
"count":1,
"items":[{
"server":"g3",
"host":"127.0.0.1",
"protocol":"rtmp",
"app":"liveshow",
"stream":"jgdy"
}]
}
}
其中:
data 業務數據的根節點:
count 業務數據的條數,可能的值為0 ~ n
items 業務數據,是一個數組,數據條數由count屬性定義。當count為0時,items屬性可能為null或者不存在。
本文檔后續章節中,在描述items元素的屬性時,會省略一些屬性的描述,即實際調用接口返回的屬性在本文檔中可能會沒有描述,這種情況下請直接忽略被忽略描述的屬性值。本文檔中描述的屬性是實際返回內容的一個子集,沒有描述到的內容對集成本系統沒有影響。
帶分頁數據的消息
如果返回數據較多,服務器會對返回的數據進行分頁,客戶端可以按照頁碼請求指定范圍的數據。帶分頁信息的返回數據結構如下:
{
"code":0,
"data":{
"page":1,
"page_size":"20",
"pages":"1",
"total":"2",
"count":2,
"items":[...]
}
}
分頁數據信息在data元素下,意義如下:
page 當前頁碼
page_size 每頁數據記錄條數
pages 總共的頁數
total 總數據條數
count 當前返回頁的數據條數
如果返回的數據帶有分頁信息,則可以在調用接口時使用page參數來請求指定頁碼的數據。
[1] RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1[S].
[2] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax[S].
[3] http://www.json.org/ Introducing JSON
<div STYLE="page-break-after: always;"></div>
客戶端調用流媒體服務器接口,首先要做的是身份認證,認證通過后才可以調用流媒體服務器的接口。
服務器和客戶端通過“挑戰->應答”方式(challenge-response)進行身份認證交互,在這個過程中,客戶端需要調用兩次接口向服務器證明身份。認證過程中不需要傳遞密碼,密碼用于簽名驗證。
身份認證的過如下:
1客戶端使用“用戶名”作為參數調用“login1”接口,向服務器發出身份認證請求
1.1)服務器確認用戶是否是有效的用戶:
1.2)若不是,則不做進一步處理,返回錯誤信息
1.3)若是,服務器產生一個“隨機數(挑戰字符串)”發送給客戶端
2客戶端使用“用戶密碼”和“隨機數(挑戰字符串)”作為輸入,按約定的算法生成一個hash值,用該hash值作為 調用“login2”接口的參數,請求login2接口。
2.1)服務器用收到的hash值與自己的計算結果比較,若二者相同,則通過認證;否則,認證失敗
2.2)若認證通過,服務器返回“token”給客戶端,否者返回錯誤信息。
userAuth/?request=login1&username=admin
{
"code":0,
"err_desc":"auha3gik9m48l1mh"
}
code 等于0,表示用戶有效,此時 err_desc 的內容是返回的挑戰字符串(challenge_code)。
code 不等于0,其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
返回的挑戰字符(challenge_code)串用于下一步認證。
userAuth/?request=login2&username=admin&hash=8c96202be3da1b23a96c4c838eb34d93
hash=md5(md5(password)+challenge_code)
{
"code":0,
"err_desc":"g2ow17rfyf4nxbkg"
}
code 0 表示登錄成功,此時 err_desc 的內容是token值,用于后續接口的通信認證。
code >0 其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
userAuth/?request=logout&token=vvkphp5ca79c538n
{
"code":0,
}
<div STYLE="page-break-after: always;"></div>
用途
查詢服務器上的應用(application)。
請求
appMgr/?request=get&token=abce
token 是在登錄認證接口中獲得的token值。后續接口描述中將省略對token參數的描述,但是要記住token參數是必須的。
{
"code":0,
"data":{
"count":2,
"items":[{"app_name":"show3",
"allow_live":"on",
"allow_publish":"on",
"allow_play":"on"
},
{"app_name":"show4",
"allow_live":"on",
"allow_publish":"on",
"allow_play":"on"}
]}
}
返回一個或多個應用的信息。
app_name 應用名
allow_live 是否允許直播業務,on表示允許,off或省略不允許
allow_publish 是否允許推送直播流到該應用,on表示允許,off或省略不允許
allow_play 是否允許播出視頻,on表示允許,off或省略不允許
{
"code":0,
"data":{
"count":1,
"items":[
{
"is_dvr":"on",
"dvr_method":"METHOD_A",
"version_it":"on",
"media_root":"/var/www/media",
"keep_time":"0",
"analyze_duration":"15",
"segment_duration":"10",
"chunk_type":"h",
"chunk_size":"1",
"chunk_ts":"off",
"formats":"flv;hls",
"probe_time":"20",
"tv_streams":"tv",
"application":"__Default"
}
]
}
}
返回應用的配置參數,items數組包含一個元素。
配置參數:
is_dvr on 表示DVR開啟,off表示關閉。
media_root 歸檔數據保存的根路徑
formats 歸檔的格式,多種格式用半角分號分開。flv 保存flv格式;hls保存hls切片格式;mp4保存mp4格式。
tv_streams 按照電視流格式歸檔的流名稱,多個名稱用半角分號分開。
application 應用名,"Default" 表示使用的是全局配置。
{
"code":0
}
{
"code":0
}
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
查詢活動的視頻流,即正在直播中的視頻流。
請求
streamMgr/?request=get_active_streams
{
"code":0,
"data":{
"count":1,
"items":[
{
"server":"g3",
"host":"192.168.1.230",
"protocol":"rtmp",
"app":"live",
"stream":"live2",
"uid":"23000043",
"end":"end",
"starttime":1516242339
}
]
}
}
items數組可能包含0或多個元素。
server 服務器類型,默認是g3
host 服務器IP地址或域名
protocol 直播協議,rtmp或rtsp
app 應用名
stream 流名稱
starttime 開始直播的時間,是一個unix時間戳
請求
closedStream/?request=close&application=live&stream=live2
application 應用名
stream 直播流名稱
{
"code":0
}
用途
解除在上一接口中被關閉和禁用的直播流,解除后直播流可以允許推流直播。
請求
closedStream/?request=open&application=live&stream=live2
application 應用名
stream 直播流名稱
{
"code":0
}
請求
closedStream/?request=list
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"stream":"live1",
"time":1516274119
}
]
}
}
items元素下包含被禁用的直播流列表。
application 應用名
stream 直播流名稱
time 禁用時間,unix時間戳
響應
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
查詢某個應用下的點播視頻流。
如果查詢的是點播應用(如"vod"),返回的是該點播應用下的點播流列表。
如果查詢的是直播應用(如“liveshow”),則會返回的是有錄制數據的歷史直播流的列表,列表中的時長、修改時間、生成時間屬性都是針對該流最后一個錄制版本的描述。可以通過下一個接口查詢某個直播流下的詳細錄制數據。
請求
streamMgr/?request=get_streams&application=vod&pageno=1&page_size=20
application 應用名
pageno 頁碼
page_size 分頁大小,【保留】,該參數暫不支持傳入,分頁大小由服務器根據數據量自動分頁。
在視頻流較多的情況下,可以通過傳入頁碼參數請求某一范圍內的數據。返回的數據中含有詳細的分頁信息,可以通過請求第一頁獲取數據總量和分頁的詳情。
本文檔的后續章節將不再對分頁屬性做解釋。
{
"code":0,
"data":{
"page":1,
"page_size":"20",
"pages":"2",
"total":"28",
"modify_time":"1515731044",
"count":20,
"items":[
{
"seq":1,
"application":"vod",
"stream":"fk7cpizvhwshjnyu",
"type":"movie",
"starttime":"1515155078",
"modifytime":"1515155078",
"active":"no",
"duration":"10",
"formats":"flv,hls,mp4"
},
{
"seq":2,
"application":"vod",
"stream":"VID20160916153947",
"type":"movie",
"starttime":"1515154953",
"modifytime":"1515154953",
"active":"no",
"duration":"36",
"formats":",,mp4"
} ]
}
}
返回應用下的點播流。
data元素下包含數據量和分頁信息:
page 當前頁碼
pages 總頁數
page_size 分頁大小
total 總數據條數
count 當前分頁中的數據條數
items元素下包含0或多條點播數據流,每條記錄的屬性如下:
application 應用名
stream 流名稱
type 點播流類型,movie表示是視頻點播流,live表示是直播流(由直播流形成的歸檔數據)。
modifytime 最后修改的時間戳
"starttime 開始生成的時間戳,對于movie類型的流,表示轉碼生成的時間,對于live類型的流表示錄制的時間。
duration 視頻流的播出時長,單位 秒
formats 視頻流的格式,一個視頻流可以有多種格式,多種格式之間使用逗號分開,可以是flv、hls、mp4格式中的一種或多種。
請求
streamMgr/?request=get_stream_files&application=liveshow&stream=jgdy&pageno=1&page_size=20
application 應用名
stream 直播流名稱
pageno 頁碼
page_size 分頁大小
{
"code":0,
"data":{
"page":1,
"page_size":"20",
"pages":"1",
"total":"2",
"modify_time":"1515755949",
"count":2,
"items":[
{
"version":"1",
"size":"28759864",
"duration":"353",
"starttime":"1515655308",
"modifytime":"1515655659",
"formats":"hls"
},
{
"version":"0",
"size":"121345164",
"duration":"1209",
"starttime":"1515218380",
"modifytime":"1515219588",
"formats":"hls"
}
]
}
}
返回某個直播流的錄制數據。
items元素下包含0或多條錄制數據,每條數據的屬性如下:
version 版本號
size 錄制數據大小,單位 字節
duration 視頻流的播出時長,單位 秒
modifytime 最后修改的時間戳,可以理解成錄制結束的時間戳
"starttime 開始錄制的時間戳。
formats 視頻流的格式,一個視頻流可以有多種格式,多種格式之間使用逗號分開,可以是flv、hls、mp4格式中的一種或多種。
用途
刪除一個視頻流。
如果請求刪除的是一個視頻點播流名稱(如"vod"應用下的某個流),會把這個點播流下的視頻數據刪除掉。
如果請求的是一個直播流名稱,則會把這個直播流下的所有版本的錄制數據刪除。要刪除直播流的某個版本的錄制數據,使用下一個接口(刪除錄制數據)。
請求
streamMgr/?request=remove_stream&application=vod&stream=fk7cpizvhwshjnyu
application 應用名
stream 流名稱
{
"code":0
}
請求
streamMgr/?request=remove_stream_version&application=liveshow&stream=yellow&version=31
application 應用名
stream 流名稱
version 錄制版本號
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
查詢當前時間在線的用戶數量,返回每個視頻流觀看用戶的總數。
請求
statMgr/?request=connection_count
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"live",
"stream":"live2",
"ver":"",
"count":1
}
]
}
}
返回當前時間視頻流的收看用戶數。
application 應用名
stream 流名稱
ver 版本號,如果是收看的直播回看數據,會返回版本號
count 用戶數量
請求
statMgr/?request=connection_detail&application=live&stream=live2&version=
application 應用名
stream 流名稱
version 版本號,如果要查看收看某個直播回看流的用戶數,需要提供版本號參數
{
"code":0,
"data":{
"count":1,
"items":[
{
"cip":"192.168.1.88",
"sip":"192.168.1.230:1935",
"uid":"D48423AB19931A0A",
"sid":"D48423AB19931A0A",
"ver":"-1",
"format":"rtmp",
"type":"live",
"reg_time":"1516261938",
"start":"-1",
"offset":"-1"
}
]
}
}
返回在線用戶的明細數據。items元素下會包含0或多條記錄。
cip 客戶端ip
sip 服務器ip
uid 用戶唯一識別id,可以有應用系統帶入
sid 每次訪問的唯一識別id
ver 訪問的哪個版本,對于視頻點播流沒有意義,對于回看流表示錄制版本號
reg_time 開始收看的時間,unix時間戳
start 從視頻的第幾秒開始收看,-1表示從視頻開頭處收看。單位 秒
offset 觀看到了第幾秒,該參數在用戶收看hls和flv格式視頻時有效。-1表示不支持或無法獲取該參數。
<div STYLE="page-break-after: always;"></div>
用途
將某個應用設置為按需錄制應用。
應用被設置為按需錄制后,該應用下的直播流默認情況下不會被錄制,只有在收到開始錄制和停止錄制的指令后才會針對某個直播流開始錄制和停止錄制。
如果系統的全局配置參數中設置了不錄制視頻,直播流不會被錄制。具體參見“application相關接口”章節中的DVR相關接口。
按需錄制的接口,對于live應用“live-”開頭的應用無效。對于帶有NR符號的應用和直播流也無效。
請求
demandDvr/?request=add_app&application=show
application 應用名
{
"code":0
}
用途
撤銷某個應用的按需錄制配置。即如果通過上一接口將某個應用設置為按需錄制應用,可以通過本接口撤銷這種設置。
請求
demandDvr/?request=del_app&application=show
application 應用名
{
"code":0
}
用途
查詢所有被設置為按需錄制的應用。
請求
demandDvr/?request=list_app
{
"code":0,
"data":{
"count":2,
"items":[
{
"application":"show1",
"time":1516264587
},
{
"application":"liveshow",
"time":1515742304
}
]
}
}
返回消息的items元素包含0或多條記錄。
application 應用名
time 添加時間,unix時間戳
用途
對按需錄制應用下的直播流,發送開始錄制指令。服務器收到指令后會開始錄制該直播流。
如果該直播流當前時間正在直播,服務器收到指令后會立即開始錄制,直到收到停止錄制指令后才會停止錄制。
如果該直播流當前時間沒有正在直播,服務器收到該指令后會保持錄制狀態,一旦該直播流開始直播就會開始錄制。
{
"code":0
}
{
"code":0
}
請求
demandDvr/?request=list&application=show
application 應用名,如果省略,表示查詢所有應用下正在錄制的流。
{
"code":0,
"data":{
"count":2,
"items":{
"show5-112233":{
"application":"show5",
"stream":"112233",
},
"liveshow-live1":{
"application":"liveshow",
"stream":"live1",
}
}
}
}
items包含多個正在錄制流的列表。
application 應用
stream 流
<div STYLE="page-break-after: always;"></div>
用途
針對某個應用,開啟播出認證。
開啟播出認證后,所有播放該應用下的視頻流的請求都需要做合法性認證,只有認證通過的請求才會允許播放。
認證的方法包括token認證、referer認證和第三方認證。
token認證,就是為每個播出流配置一個認證碼(token),播放終端只有獲得該認證碼,并將該認證碼作為播出請求的參數提交,才能夠正常播放視頻。
referer認證,就是要求播放終端必須從某個域名下的網站發起播放請求,也就是只有將播出視頻嵌入到某個指定域名下的網站才允許播放。
第三方認證,就是將認證請求轉交給第三方系統的服務接口去認證,認證通過后才允許播放。開啟第三方認證后,所有本地認證策略會被忽略。
請求
authMgr/?request=open_play_auth&application=liveshow
application 應用名
{
"code":0
}
請求
authMgr/?request=close_play_auth&application=liveshow
application 應用名
{
"code":0
}
請求
authMgr/?request=open_play_token&application=liveshow&open=1
application 應用名
open 是否開啟認證,open=1表示開啟認證,open=0表示關閉認證
{
"code":0
}
請求
authMgr/?request=list_play_token&application=liveshow
application 應用名
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"stream":"live1",
"token":"8501E93883FC4D14",
"use_once":0
}
]
}
}
items元素包含當前應用下的token定義。
application 應用名
stream 流名稱
token token值
請求
authMgr/?request=add_play_token&application=liveshow&stream=live1&token_val=8501E93883FC4D14
application 應用名
stream 流名稱
token_val 添加的token值(注意這里使用token_val參數名,避免與接口認證的token參數沖突)
{
"code":0
}
用途
刪除某個視頻流的token。
請求
authMgr/?request=delete_play_token&application=liveshow&stream=live1
application 應用名
stream 流名稱
{
"code":0
}
用途
為某個應用設置播出認證referer值。
請求
authMgr/?request=set_referer&application=liveshow&url=play.ruiboyun.net;cloud.ruiboyun.net
application 應用名
url 允許訪問的域名列表,多個域名之間使用半角分號隔開。如果要撤銷referer認證,將url設為空即可。
{
"code":0
}
用途
將某個應用下的播出認證地址設置為一個第三方認證地址。
設置第三方認證地址后,所有本地認證策略失效。
如果要取消第三方認證,將url參數設置為空即可。
請求
authMgr/?request=set_play_auth_url&application=liveshow&url=http://i.ruiboyun.net/interface
application 應用名
url 第三方認證接口的url地址,本參數需要進行【URL編碼】。
{
"code":0
}
請求
authMgr/?request=list
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"is_play_auth":0,
"is_pub_auth":1,
"play_auth_url":null,
"pub_auth_url":"",
"referer":null,
"is_play_token_auth":0
}
]
}
}
items應用下會返回多條記錄,每條記錄定義個應用的認證配置。
application 應用名
is_play_auth 是否開啟播放認證,0關閉,1開啟
is_pub_auth 是否開啟推流認證,0關閉,1開啟
pub_auth_url 推流第三方認證地址,null,"local","",或省略,都表示不使用第三方認證
play_auth_url 播出第三方認證地址,null,"local","",或省略,都表示不使用第三方認證
referfer 允許播出的域名列表,多個域名之間使用半角分號隔開,該項僅對播出認證有效
is_play_token_auth 是否開啟播出的token認證,0關閉,1開啟,使用該選項是為了配合只使用referer認證的情況,該項僅對播出認證有效
<div STYLE="page-break-after: always;"></div>
用途
針對某個應用,開啟推流認證。
開啟推流認證后,所有向該應用下的推送直播流的請求都需要做合法性認證,只有認證通過的請求才會允許推送。
認證的方法包括token認證和第三方認證。
token認證,就是為每個直播流配置一個認證碼(token),推流終端只有獲得該認證碼,并將該認證碼作為推流請求的參數提交,才能夠正常推送直播流。
第三方認證,就是將認證請求轉交給第三方系統的服務接口去認證,認證通過后才允許推送直播流。開啟第三方認證后,所有本地認證策略會被忽略。
請求
authMgr/?request=open_pub_auth&application=liveshow
application 應用名
{
"code":0
}
請求
authMgr/?request=close_pub_auth&application=liveshow
application 應用名
{
"code":0
}
用途
查詢某個應用下推流認證token的列表。
請求
authMgr/?request=list_pub_token&application=liveshow
application 應用名
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"stream":"live1",
"token":"9501E93993FC4D14",
"use_once":0
}
]
}
}
items元素包含當前應用下的token定義。
application 應用名
stream 流名稱
token token值
請求
authMgr/?request=add_pub_token&application=liveshow&stream=live1&token_val=9501E93993FC4D14
application 應用名
stream 流名稱
token_val 添加的token值(注意這里使用token_val參數名,避免與接口認證的token參數沖突)
{
"code":0
}
用途
刪除某個視頻流的推流認證token。
請求
authMgr/?request=delete_pub_token&application=liveshow&stream=live1
application 應用名
stream 流名稱
{
"code":0
}
用途
將某個應用下的推流認證地址設置為一個第三方認證地址。
設置第三方認證地址后,所有本地認證策略失效。
如果要取消第三方認證,將url參數設置為空即可。
請求
authMgr/?request=set_pub_auth_url&application=liveshow&url=http://i.ruiboyun.net/interface
application 應用名
url 第三方認證接口的url地址,本參數需要進行【URL編碼】。
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
查詢某個應用的播出并發限制值。
如果一個應用設置了并發限制值,當訪問該應用下視頻流的并發數超過該值時,終端的播出請求會被禁止。
這個限制值是該應用下所有視頻流的播出并發數總和限制值。
請求
limitMgr/?request=get&application=liveshow
application 應用名,可以省略,省略時會返回所有應用的配置信息。
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"limit":100
}
]
}
}
application 應用名
limit 限制值
用途
設置某個應用的播出并發限制值。
如果要取消限制,將limit參數設為0。
請求
limitMgr/?request=set&application=liveshow&limit=100
application 應用名
limit 限制值,該值有一個允許范圍,具體與服務器的發布版本有關
{
"code":0
}
application 應用名
limit 限制值
<div STYLE="page-break-after: always;"></div>
用途
查詢服務器上的串流任務。
請求
streamingMgr/?request=get_streaming&id=
id 串流任務在服務器上的唯一編號,省略時會返回所有任務的列表。
{
"code":0,
"data":{
"count":2,
"items":[
{
"name":"監控視頻",
"id":"BAF9B8E5BA819259",
"protocol":"rtsp",
"source_url":"rtsp://192.168.2.246:8555/H264SubStream",
"video_only":"on",
"use_transcode":"on",
"video_size":"1280x720",
"width":"1280",
"height":"720",
"bitrate":"500",
"use_audio_transcode":"on",
"bitrate_audio":"56",
"to_host":"localhost",
"application":"show",
"stream":"cameral1",
"status":0
},
{
"name":"本地文件串流",
"id":"D16E78096B55C850",
"protocol":"file",
"source_url":"file:///var/media/jgdy.mp4",
"to_host":"localhost",
"application":"liveshow",
"stream":"jgdy",
"status":0
}
]
}
}
items元素包含0個或多個串流任務。
name 串流的名稱,在添加任務時輸入
id 串流的唯一編號,在添加任務時系統自動分配,后續管理串流任務需要該id
protocol 輸入協議
source_url 視頻源地址
video_only 輸入源是否只有視頻,on表示只有視頻
audio_only 輸入源是否只有音頻,on表示只有音頻
use_transcode 是否啟動視頻轉碼,on表示啟動,off或者省略表示沒有轉碼
width 轉碼的輸出視頻畫面寬度,0表示保持輸入源畫幅大小
height 轉碼的輸出視頻畫面高度,0表示保持輸入源畫幅大小
bitrate 視頻轉碼的比特率,單位 kbps
use_audio_transcode 是否啟動音頻轉碼,on表示啟動,off或者省略表示沒有轉碼
bitrate_audio 音頻轉碼比特率 單位 kbps
to_host 串流的目標服務器,省略或localhost都表示要串流到本服務器。如果要串流的其他服務器,該值為“other”,并使用參數to_server指示要串流的目標服務器IP或域名。
to_server要串流其他服務器的IP或域名。
application 串流的目標應用名
stream 串流的目標直播流名稱
status 串流任務狀態 0沒有運行 1正在運行 其他表示異常
用途
添加一個串流任務。
添加串流任務時,要調用接口的客戶端提供一個唯一的任務id,該id可由字母和數字組成,用于在調用后續接口時識別該任務。
如果提供的id和已經存在任務的id相同,則服務器會將該請求當作修改串流任務處理。
請求
streamingMgr/?request=add_streaming&name=監控視頻&id=BAF9B8E5BA819259&protocol=rtsp&source_url=rtsp%3a%2f%2f192.168.2.246%3a8555%2fH264SubStream&video_only=on&use_transcode=on&video_size=1280x720&width=1280&height=720&bitrate=500&use_audio_transcode=on&bitrate_audio=56&to_host=localhost&application=show&stream=cameral1
參數:
id 任務唯一編號,應由字母或數字組成,長度建議在6個字符以上,要避免重復
protocol 串流輸入源的協議,支持rtsp、rtmp、udp、http、mms等協議
source_url 串流輸入的源地址,該參數需要進行【url編碼】
video_only 是否只有視頻,on 表示只有視頻,在只有視頻時,所有音頻相關參數會被忽略
use_transcode 是否進行視頻轉碼,on表示進行轉碼,off或者省略表示不轉碼。如果不進行視頻轉碼,所有視頻轉碼參數會被忽略
width 視頻轉碼輸出的畫面寬度,單位像素
height 視頻轉碼輸出的畫面高度,單位像素
bitrate 視頻轉碼輸出的比特率,單位kpbs
use_audio_transcode 是否進行音頻轉碼,on表示進行轉碼,off或者省略表示不轉碼。如果不進行音頻轉碼,所有音頻轉碼參數會被忽略。
bitrate_audio 音頻轉碼比特率,單位kbps
to_host 串流的目標服務器,省略或localhost都表示要串流到本服務器。
如果要串流的其他服務器,該值為“other”,并使用參數to_server指示要串流的目標服務器IP或域名。
to_server要串流其他服務器的IP或域名,要是本參數生效,必須將to_host值設為other。
application 串流輸出的應用名,定義向服務器的哪個應用輸出直播流
stream 串流輸出的直播流名稱
{
"code":0
}
用途
啟動一個串流任務。
添加完串流任務后,可以調用該接口運行任務。
請求
streamingMgr/?request=start_streaming&id=BAF9B8E5BA819259
id 串流任務的唯一編號,可以通過查詢串流任務接口獲得。
{
"code":0
}
用途
停止一個串流任務。
請求
streamingMgr/?request=stop_streaming&id=8A9B587159245ED5
id 串流任務的唯一編號,可以通過查詢串流任務接口獲得。
{
"code":0
}
用途
刪除一個串流任務。
請求
streamingMgr/?request=remove_streaming&id=8A9B587159245ED5
id 串流任務的唯一編號,可以通過查詢串流任務接口獲得。
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
查詢服務器上的自動刪除任務。
自動刪除任務是一種運行在服務器上的服務,按照定義的規則自動刪除過期的視頻內容。例如,對于監控和視頻直播類業務,可以定義一個任務,定期刪除某個直播流30天前的錄制內容。
請求
autodelMgr/?request=get&application=&stream=
application 應用名,可以省略,省略時表示查詢所有應用下的自動刪除任務。
stream 直播流名,可以省略,省略時表示查詢某個應用下的所有自動刪除任務。
{
"code":0,
"data":{
"count":1,
"items":[
{
"application":"liveshow",
"stream":"hks",
"timeline":"3600"
}
]
}
}
application 應用名
stream 直播流名
timeline 視頻保留的時間長度,單位秒,例如,3600表示保存1小時內的節目
用途
新建一個自動刪除任務。
請求
autodelMgr/?request=set&application=liveshow&stream=live1&timeline=86400
application 應用名,【必選】
stream 直播流名,【必選】
timeline 視頻保留的時間長度,單位秒,【必選】,例如,86400表示保存1天內的節目
如果應用名和直播流名和已有任務的都一樣,則會覆蓋已有的任務。
{
"code":0
}
用途
刪除一個自動刪除任務。
請求
autodelMgr/?request=remove&application=liveshow&stream=live1
application 應用名,【必選】
stream 直播流名,【必選】
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
這組接口實現視頻資源的上傳及管理,為視頻轉碼和發布提供支持。
上傳的服務器上的視頻文件,經過轉碼發布后形成可以對外播出的在線視頻資源。
本小節描述文件上傳和管理的接口,轉碼接口在下一章節說明。
請求
http://host/upload?app=g3_video&sub_path=&file_name=&token=abcd&field_name=field_abcd
其中:
http://host/upload 是上傳位置,保持不變。host替換成實際的流媒體服務器IP地址或域名。
參數:
app=g3_video,表示上傳的是視頻文件,要保持不變。
sub_path表示上傳到哪個子目錄下,如果省略表示上傳到用戶根目錄下。
file_name上傳文件要在服務器上保存的文件名,如果跟上傳文件名一樣,則省略。該參數提供了一個上傳文件在服務器上重新命名的機會。中文件名要采用UTF-8編碼。
token意義跟其他接口一樣。
{
"code":0
}
{
"code":0,
"data":{
"page":"1",
"page_size":"50",
"pages":"1",
"total":"1",
"count":1,
"items":[{
"filename":"案例視頻8.mp4",
"mtime":"2018-01-12 12:43",
"size":"3153954",
"charset":"UTF-8",
"timestamp":1515732410,
"is_media":1,
"duration":98,
"bitrate":255309,
"stream_number":2,
"timestamp_m":1515397208,
"streams":[
{
"index":"0",
"type":"video",
"codec":"h364",
"pic_width":640,
"pic_height":352,
"bitrate":208980,
"duration":98,
"pix_fmt":"yuv420p",
"frame_rate":"28/1"
},
{
"index":"1",
"type":"audio",
"codec":"aac",
"lan":"und",
"channels":1,
"bitrate":43970,
"duration":98,
"sample_rate":44100
}
]
}]
}
}
返回數據包含分頁信息,在文件量較大時要按頁查詢。
items元素包含0或多個文件信息。streams元素是該文件包含的音視頻流信息,一個多媒體文件會包含1到多個音視頻流
filename 文件名,返回的文件名總是采用UTF-8編碼
charset 文件名在服務器上的字符集編碼,省略表示是UTF-8編碼。如果為非UTF-8編碼,在后續的接口中請將該屬性帶入
mtime 文件最后的修改時間
size 文件大小,單位字節
duration 文件播出時長,單位秒
bitrate 綜合碼率,單位bps
stream_number 文件包含的音視頻流總數
streams元素:
streams包含0或多個音視頻流,屬性:
index 流的索引編號,在轉碼接口中,在多語言音頻流的情況下,可以通過傳入音頻流索引號選擇指定的音頻流。
type 視頻或音頻,對應 video 或 audio
codec 流編碼格式,例如視頻h364編碼,音頻aac編碼等
bitrate 流的比特率,單位bps
pix_fmt 視頻幀格式
frame_rate 幀率
pic_width 視頻畫幅寬度
pic_height 視頻畫幅高度
lan 音頻語言信息,語言編碼縮寫
channels 音頻聲道數
sample_rate音頻采樣率
{
"code":0,
"data":{
"count":2,
"items":[
{
"filename":"auto",
"mtime":"2018-01-06 16:36",
"size":"4096",
"timestamp":0,
"auto_transcode":1
},
{
"filename":"audio",
"mtime":"2017-12-27 18:09",
"size":"4096",
"timestamp":0,
"auto_transcode":0
}]
}
}
items元素包含0或多個目錄信息。
filename 目錄名
mtime 最后修改時間
auto_transcode 是否針對該目錄設置了自動轉碼任務,1表示有自動轉碼任務
{
"code":0,
"data":{
"count":1,
"items":[
{
"filename":"/案例視頻8.mp4",
"charset":"UTF-8",
"mtime":1515732213,
"size":3153954,
"timestamp":1516941450,
"is_media":1,
"duration":98,
"bitrate":255309,
"stream_number":2,
"timestamp_m":1515397208,
"streams":[
{
"index":"0",
"type":"video",
"codec":"h364",
"pic_width":640,
"pic_height":352,
"bitrate":208980,
"duration":98,
"pix_fmt":"yuv420p",
"frame_rate":"28/1"
},
{
"index":"1",
"type":"audio",
"codec":"aac",
"lan":"und",
"channels":1,
"bitrate":43970,
"duration":98,
"sample_rate":44100
}
]
}
]
}
}
返回一個文件的信息,包含多媒體信息。
返回數據的文件信息的描述與查詢文件列表接口中對文件信息的描述相同。
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
用途
對上傳到服務器上的視頻進行轉碼,轉碼后可以面向互聯網或局域網發布播出。
參數說明:
src 輸入文件名,如果文件在轉碼目錄的下級子目錄內,則需要包含該子目錄,如: subdir/myvideo.mp4。中文文件名參數使用UTF-8字符集編碼。
encoding 輸入文件名在服務器上的實際字符集編碼。如果是UTF-8可以省略。
src_id 轉碼后輸出資源的資源編號,由轉碼方提供(可以和集成的業務系統關聯對應),只能包含英文字符和數字,要確保其唯一性。這個編號就是資源在流媒體服務器上的播出流名稱,可以使用該編號獲取播出視頻流。
application 應用名,定義轉碼結束后資源發布到流媒體服務器上的哪個應用下。該應用名和流名稱(對應src_id)可以確定一個資源的播出地址。
video_bitrate 視頻轉碼的比特率,單位Kbps,如果省略表示不對視頻進行轉碼。只有視頻格式是H264,并且碼率大小適合播出(如在2Mbps以下),才可以省略該參數。
audio_bitrate 音頻轉碼的比特率,單位Kbps,如果省略表示不對音頻進行轉碼。只有音頻格式是AAC,并且碼率大小適合播出(如在100Kbps以下),才可以省略該參數。
width 視頻轉碼輸出的畫面寬度,省略或者設為0表示不改變畫幅,使用原始視頻的畫幅大小。
height 視頻轉碼輸出的畫面高度,省略或者設為0表示不改變畫幅,使用原始視頻的畫幅大小。
deinterlace 對于隔行掃描的視頻畫面,該參數定義是否進行畫面的反交錯處理,ON表示要進行反交錯,OFF或者省略表示不進行反交錯處理。
audio_stream 音頻流索引號,對于多語言的多媒體提文件,會包含多個語言的音頻流,使用該參數可以選擇一種語言輸出。不清楚怎么使用時,請省略該參數,大部分情況下不需要提供。
output_formats 轉碼輸出格式,可以是flv,hls,mp4格式的一種或幾種,多種格式使用分號隔開。省略該參數時將會使用系統配置的歸檔格式參數。
callback 可選參數。轉碼結果回調接口位置,該參數是一個HTTP地址,轉碼結束后系統使用HTTP Get向該地址匯報轉碼結果。調用回調接口時,系統會在回調接口URL上附加上資源編號參數src_id
和轉碼結果參數result
,result=ok
表示轉碼成功,result=error
表示轉碼失敗。
publish 可選參數。如果需要將轉碼輸出的視頻信息發布到第三方系統,可以提供發布地址,轉碼結束后會將視頻信息提交給該地址。如果沒有該需求,請省略該參數和title參數。
title 如果要進行轉碼信息發布,可以提供一個發布的標題。
{
"code":0
}
{
"code":0,
"data":{
"count":1,
"items":[
{
"status":"working",
"src_file":"案例視頻8.mp4",
"application":"vod",
"bitrate":"800",
"width":"640",
"height":"352",
"bitrate_audio":"56",
"src_id":"8ass3",
"add_time":"1516947498",
"from":null,
"start_time":"1516947498",
"encode_progress":"1.0%",
"work_duration":1
}
]
}
}
返回0或多個轉碼任務的進度信息。
src_file 轉碼文件名
application 輸出應用名
src_id 資源編號
start_time 開始轉碼時間,Unix時間戳
encode_progress 轉碼進度,百分比格式
work_duration 轉碼持續時間,單位秒
bitrate 視頻轉碼碼率,Kbps
bitrate_audio 音頻轉碼碼率,Kpbs
width 轉碼輸出畫幅寬度
height 轉碼輸出畫幅高度
請求
transcodeMgr/?request=stop_transcode&src_id=8ass3
src_id 轉碼任務的資源編號,由轉碼接口傳入。
{
"code":0
}
<div STYLE="page-break-after: always;"></div>
管理系統中的管理員帳號。
備注: 如果傳入的name在系統中存在同名用戶,則會用新的信息替換原有信息,相當于“修改”用戶。
暫不支持
請求
userAuth/?request=functions
響應
{
"code": 0,
"data": {
"count": 17,
"items": [
{
"controller": "loginWeb",
"name": "登錄管理平臺"
},
{
"controller": "appMgr",
"name": "管理應用"
},
{
"controller": "streamMgr",
"name": "管理播出流"
},
{
"controller": "authMgr",
"name": "管理播出/推流認證"
},
{
"controller": "streamingMgr",
"name": "管理串流"
},
{
"controller": "streamingMgr2",
"name": "管理監控接入"
},
{
"controller": "closedStream",
"name": "關閉/開啟直播流"
},
{
"controller": "demandDvr",
"name": "執行按需錄制"
},
{
"controller": "limitMgr",
"name": "設置并發限制"
},
{
"controller": "autodelMgr",
"name": "設置自動刪除"
},
{
"controller": "set_domain",
"name": "設置本機域名"
},
{
"controller": "cdnMgr",
"name": "配置CDN"
},
{
"controller": "statMgr",
"name": "播出統計和明細"
},
{
"controller": "transcodeMgr",
"name": "管理轉碼"
},
{
"controller": "fileMgr",
"name": "管理轉碼文件(上傳和管理資源文件)"
},
{
"controller": "systemMgr",
"name": "重啟服務"
},
{
"controller": "cms_module",
"name": "使用內容管理模塊(如果安裝)"
}
]
}
}
<div STYLE="page-break-after: always;"></div>
本接口實現錄制rtmp協議的直播流。
請求
recorderMgr/?request=add&id=8ass3&duration=120&input=rtmp://ip/app/stream
id 任務的唯一編號,由調用接口方傳入,用于識別一個任務。
input 要錄制的直播地址
duration 錄制時長,秒
img_int 截圖間隔,秒
callback 回調地址,如果有回調地址,錄制結束后將回調該URL地址。
響應
{
"code":0
}
回調說明
如果提供了callback參數,錄制結束后將會請求該地址。
系統將使用POST協議向該地址發送任務執行的情況。POST數據是一個json串,json結構如下:
{
"id":"abcd",
"result":"OK",
"start":"1516947498",
"review_url":0,
"images":[
{
"offset":0,
"url":"imageurl"
},
]
}
id 任務編號,有添加任務時傳入
result 錄制結果,OK 或 ERROR
start 開始錄制時間,UNIX時間戳
review_url 回看地址
images 截圖數組
offset 截圖時間,相對于開始錄制時間的秒數。
url 截圖地址
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。