服务器端主动下发命令消息到设备端,消息有3种:Remote,Mouse,Key
Remote消息:服务器下发远程请求消息,消息中包含Url表示需要推流到指定服务地址,Sender表示是谁发起的远程请求
远程请求示例:
{
"Type":"Remote", // 远程消息:服务器->设备(下行)
"Url":"rtmp://118.190.50.151/live/stream", // 视频推流地址,如果地址为空表示停止远程
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}
关于设备录屏推流可使用ffmpeg推送桌面流功能:
ffmpeg -y -f gdigrab -t 1800 -r 10 -i desktop -f flv rtmp://118.190.50.151/live/stream
设备接到服务器下发的远程请求后告诉服务器设备的基本信息:设备名称,屏宽高点数
远程开始示例:
{
"Type":"Remote", // 远程消息:设备->服务器(上行)
"Pid":"000195", // 设备Pid
"Name":"建行电视测试机", // 设备名称
"Width":1920, // 设备屏宽点数
"Height":1080, // 设备屏高点数
"Sender":"000195", // 远程桌面设备的Pid,在此变成消息发送者 /*** 注意 ***/
"Receiver":"Administrator" // 远程发起人,用户编码,在此变成消息接收者
}
远程结束示例:
{
"Type":"Remote", // 远程消息:服务器->设备(下行)
"Url":"" // Url空,表示停止当前远程
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}
Mouse消息:当设备接到鼠标消息,就执行对应的鼠标动作
鼠标移动示例:
{
"Type":"Mouse", // 远程鼠标消息:服务器->设备(下行)
"X":123, // 鼠标所在X坐标值
"Y":456, // 鼠标所在Y坐标值
"Button":"", // 鼠标按键:空表示没有
"ButtonState":"", // 鼠标按键状态:空没有没有
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}
鼠标左键按下示例:
{
"Type":"Mouse", // 远程鼠标消息:服务器->设备(下行)
"X":123, // 鼠标所在X坐标值
"Y":456, // 鼠标所在Y坐标值
"Button":"Left", // 鼠标按键:空表示没有,Left-左键,Right右键
"ButtonState":"Pressed", // 鼠标按键状态:空没有没有,Pressed-按下,Released-松开
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}
鼠标右键松开示例:
{
"Type":"Mouse", // 远程鼠标消息:服务器->设备(下行)
"X":123, // 鼠标所在X坐标值
"Y":456, // 鼠标所在Y坐标值
"Button":"Right", // 鼠标按键:空表示没有,Left-左键,Right右键
"ButtonState":"Released", // 鼠标按键状态:空没有没有,Pressed-按下,Released-松开
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}
Key消息:当设备接到键盘消息,就执行对应的键盘动作
键盘按下示例:
{
"Type":"Key", // 远程按键消息:服务器->设备(下行)
"Key":65, // 按键值:65-表示A,66表示B,可百度,可参考:https://blog.csdn.net/KIG_cat/article/details/50676885
"KeyState":"Down" // 按键状态:Down表示按下,Up表示松开
"Sender":"Administrator", // 远程发起人,用户编码
"Receiver":"000195" // 远程桌面设备的Pid
}