Linux远程登陆开发以及视频传输流

简介

 我们在使用Ubuntu进行开发时,常常需要用到远程连接控制的功能,在常用的方法中,ssh远程登陆控制是最常用的一种。
 ssh是Secure Shell的缩写,即安全外壳协议,由IETF的Network Working Group网络小组所制定。其使用简单,且较为可靠,专为远程登录会话和其他网络服务提供安全性,利用ssh协议可以有效防止远程管理过程中的信息泄露。其最初用在UNIX系统上,后来迅速扩展到其他平台。
 本文章将介绍如何使用ssh进行终端控制、代码开发以及视频传输流等。

配置ssh终端连接

 既然是远程连接,就意味着我们需要两台电脑,控制的一方称为客户端,被控制的一方称为服务端。

 客户端一般默认装有openssh-client,不需要配置。

服务端:

1. 安装ssh服务端

# 终端键入
sudo apt-get install openssh-server

2. 查看SSH是否安装成功

# 终端键入
ps -e |grep ssh

 如果安装成功会显示如下界面:

3. 启动ssh服务

# 终端键入
service ssh start

4.开启远程连接服务

 如果没有开启远程连接服务,我们就会看到以下错误信息:

Permission denied, please try again(publickey,password)

解决方法:

# 打开sshd_config配置文件
vim /etc/ssh/sshd_config

 将其中PermitRootLogin后面修改成yes即可。

5.ssh连接

 完成上述步骤,我们就可以开始进行ssh终端远程连接,但前提是我们知道服务器的IP地址,且客户端和服务器要在同一局域网(没有网络也可以)下

 在服务端上终端键入

# 查看IP地址
ifconfig

然后在客户端执行

# ssh远程连接
ssh 用户名@ip地址

Remote-SSH远程开发

 Remote-SSH是VS Code上一个非常好用的插件,其基于ssh能够实现在客户端上远程登陆服务端并在VS Code上进行代码开发。

1. 安装Remote-SSH插件

2.配置config文件

 为了方便连接,我们可以在.ssh目录下创建一个config文件

cd .ssh/
touch config

 打开config文件,键入以下内容

Host 服务端名称(可自己命名)
HostName 服务端IP地址
User 服务端用户名

 写完config文件后,要进行远程登陆可以直接ssh 服务端名称即可。

3. vscode远程连接

 点击vscode中左下角的绿色键,选择下图中的选项Connect Current Window to Host

 然后选择Configure SSH Hosts…

 选择刚刚配置过的config文件后,点击自己命名的服务端名称即可进行远程连接

 连接后即可打开服务端上的工程进行远程代码开发,甚至还能够进行Debug!

使用GStreamer进行远程视频传输流

 在远程开发的过程中,我们常常需要通过观察图形化界面,才能够知道运行的效果,但ssh终端控制下并不支持图形化的传输。例如,我们在使用opencv时需要imshow来观察图像处理的效果,这时候我们可以使用GStreamer作为IO,实现远程imshow

1. 服务端配置

# 安装GStreamer相关插件
sudo apt-get install gstreamer1.0-tools \
  gstreamer1.0-plugins-base \
  gstreamer1.0-plugins-good \
  gstreamer1.0-plugins-bad \
  gstreamer1.0-plugins-ugly
# 安装GStreamer开发包
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

2. 重新编译OpenCv

 注意,在编译时cmake加上**-D WITH_GSTREAMER=ON**,看GStreamer是不是都是Yes。

3. 传输视频流

接收端

# 接收视频流
sudo gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,media=video,payload=26,clock-rate=90000,encoding-name=JPEG,framerate=30/1 ! rtpjpegdepay ! jpegdec ! videoconvert ! autovideosink

 成功开启后终端界面如下:

发送端

// 首先要先实例化用于传输视频流的VideoWriter
VideoWriter out("appsrc block=false ! queue leaky=downstream ! videoconvert ! video/x-raw,format=YUY2 ! jpegenc ! rtpjpegpay ! udpsink host=接收端IP port=5000",CAP_GSTREAMER,0,帧率,
图片大小,true);

 实例化后,用out << frame;进行视频流传输。

后续

 喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rosen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值