webrtc远程控制系统具体运行

webrtc远程控制系统运行

1、ssh远程登录模块

ssh远程登录流程:
在这里插入图片描述

在这里插入图片描述
根据上述流程具体实现步骤:

  1. 首先要安装ssh-server

    sudo apt-get install open-server
    
  2. 启动ssh服务

    sudo /etc/init.d/ssh start      // 或者 service ssh start  启动ssh服务。
    ps -e | grep sshd               // 查看ssh服务状态,如果ssh服务没运行则什么也不显示。
    
  3. 创建ssh client

    su rooot    //进入root权限,输入密码:***
    cd /home    //进入home文件夹下
    adduser username(如:Ubuntu)   //在home文件夹下添加远程登录用户。
    

其中Full Name,Room Number,Work Phone,Home Phone,Other 都可以不填直接按回车跳过。在这里插入图片描述

 cat /etc/passwd   //可查看所有用户。

在这里插入图片描述
4. ssh远程登录
在服务器、设备端软件运行后,在客户端中输入用户名、密码就可以登陆了。
登录成功界面如下:
在这里插入图片描述

2、远程监控模块

  1. gstreamer采集视频和音频
    在config.yaml文件下修改AudioSrc、VideoSrc具体如下:
    在这里插入图片描述

    使用 gst 中提供的 elements 自己创建 pipeline 来录制多媒体资源

     gst-launch autoaudiosrc ! audioconvert ! faac ! mp4mux ! filesink location=aac_audio.mp4  //录制音频
     gst-launch v4l2src ! xvimagesink    //录制视频
    

    补充:关于gst-launch中关于视频的一些常用命令:点这里
    gst-launch中关于音频的一些常用命令:点这里

    gstreamer 中有很多插件,其中视频输入设备由v4l2src插件来完成。
    v4l2src插件默认打开的设备是/dev/video0,如果想换可以通过gst-launch-1.0 v4l2src device=/dev/video*的方式来切换,v4l2src默认所申请的buffer个数是5个。
    audioconvert插件,这个插件会转化原始的不同音频格式之间的缓冲。它支持从整数到浮点数的转化,符号数/字节序转换以及声道转换,可以用来解决音频不匹配的问题。
    video/x-raw 这是个格式过滤插件,其实就是对pipeline中的数据流的格式做一个限制。
    更多插件可以查看:https://blog.csdn.net/sakulafly/article/details/21748777

  2. 测试远程监控模块
    虚拟机连接内置摄像头
    在这里插入图片描述
    摄像头等亮了,但画面无法显示
    在这里插入图片描述
    经查询USB兼容性出现了问题,可以在虚拟机设置中改变USB兼容性版本,具体如下图:
    在这里插入图片描述
    然后可以在终端输入cheese 命令测试摄像头是否 可以正常显示,直到找到适合的USB兼容版本。

    最后运行服务器、设备端的软件,客户端连接后,可以观察到画面,并有声音。
    在这里插入图片描述

3.远程指令模块

1、配置阿里云物联网设备
在阿里云物联网平台创建产品,并添加自定义功能,然后添加设备。
在这里插入图片描述
添加自定义功能:
在这里插入图片描述
在文档与工具中下载Link SDK.然后解压出来。
查看创建的设备的设备三原组:

在这里插入图片描述
打开解压出来的文件LinkSDK,在demos文件夹中找到mqtt_basic_demo.c文件,打开并编辑。找到int main(int argc, char *argv[])主函数,替换其中的设备三元组为自己的设备三原组。

char *product_key       = "a1ilF5iP7vQ    ";
char *device_name       = "device01";
char *device_secret     = "03120d1f786fbb10d02b0e9fdfa2dea4";

并在mqtt_basic_demo.c文件中添加设备属性上报函数int32_t demo_send_property_post():
物理模型通信其他具体代码参考:https://help.aliyun.com/document_detail/146236.html

int32_t demo_send_property_post(void *dm_handle)
{

/* 属性上报payload格式*/ 
char *propertyFmt = "{\"GeoLocation\":{ \"switch\":%d}"; 
int status = 0 ;   //status为0 ~ 1

//读取客户端写入的led_0状态文件
unsigned char ch;
FILE *fp = fopen("/home/t/status.txt","r"); 
ch = fgetc(fp);
if(ch=='1')
{ 
    status=1;
}
fclose(fp);
char property_params[256] = {0};
aiot_dm_msg_t msg;

snprintf(property_params, sizeof(property_params), propertyFmt, status); 
memset(&msg, 0, sizeof(aiot_dm_msg_t));
msg.type = AIOT_DMMSG_PROPERTY_POST;   
msg.data.property_post.params = property_params;
return aiot_dm_send(dm_handle, &msg);
}

2、编写脚本。
在设备端软件/control目录下添加test文件夹。其中包含开灯(close)、关灯(open)两个脚本。

/**close文件**/
echo 0 > ~/status.txt    //将0写入status.txt

/**open文件**/
echo 1 > ~/status.txt    //将1写入status.txt

3、设备上线
先在LinkSDK目录下打开终端,编译SDK.

$ make  //编译SDK
$ cd output  //进入output目录
$ ./mqtt-basic-demo  //运行编译文件,使设备上线

运行结果:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你有多台电脑的键盘鼠标放在狭窄的电脑桌上, 当你在每台电脑的键盘鼠标之间来回切换而焦头烂额时, 当你为了发送一段文本而不得不使用飞鸽或QQ甚至通过共享文件来时传递时, 你或许需要它:"远程虚拟控制" 这个软件实现了只使用一套键盘鼠标控制最多八台主机的功能, 并能在这些主机之间方便的传送文本内容, 实现在一台电脑上Ctrl + C 在另外一台电脑上Ctrl + V, 完成远程复制功能。 主机之间的切换无需进行任何附加操作, 你只需要将你的鼠标从这个显示移动到另一台显示器, 就如同将输入焦点从一个窗口移动到另一个窗口一样, 当完成鼠标切换后, 键盘也同时将输入焦点切换到相应的主机, 此后的大部分键盘输入操作均只对拥有鼠标的主机有效, 除了(Ctrl + ATL + DEL、WIN + L)这些组合键无法传送, 当按下这些组合键后, 主控机即刻获取输入焦点。 此软件只能在登陆后的默认桌面才可使用, 不能在登陆桌面, 屏保桌面下使用(等待解决这个问题), 在使用时如果系统安装有防火墙软件, 请将本程序加入防火墙的白名单或是相应配制文件中, 让防火墙放过检测。否则可能 给你的使用带来不便。 软件分为主控端和被控端, 可能存在多台被控端, 但是只能有一台主控端, 由主控端向其它被控端发送键盘鼠标指令, 以控制被控端的行为。 将程序分别解压到你每台的电脑上,依据配制说明将一台电脑配制成主控机, 将其它的电脑制成被控机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值