使用基于 android studio 构建的 android 应用程序进行 Jsch X11 转发
Posted
技术标签:
【中文标题】使用基于 android studio 构建的 android 应用程序进行 Jsch X11 转发【英文标题】:Jsch X11 Forwarding using an android application built on android studio 【发布时间】:2017-08-15 15:48:05 【问题描述】:我已经成功设置了一个使用 Jsch 库远程访问计算机并发送控件的 android 应用程序。我想 ssh 进入计算机摄像头并使用 x11 转发将其显示到应用程序上。我正在使用 android studio 开发应用程序并找到了“视频视图”功能。然而。我知道您可以将其链接到 youtube 视频,但我不清楚如何将 x11 转发命令链接到视频查看功能。任何帮助或建议将不胜感激!
【问题讨论】:
【参考方案1】:X11 转发允许远程 X11 客户端与本地 X11 服务器通信。它不是视频流。 Android 没有内置 X11 服务器。
您无需 X11 即可访问 /dev/video0
。如果您想转发摄像机,我建议您使用已经可以stream video 的现有程序之一并转发它。例如,如果 VLC 是远程安装的,
vlc -I dummy \
--sout '#transcodevcodec=h264:stdaccess=http,mux=ts,dst=:8080/video.mp4' \
v4l2:///dev/video0
将导致 VLC 充当 HTTP 服务器,将视频设备编码为流并在路径 http://localhost:8080/video.mp4
处提供服务。如果您使用 Jsch 或任何其他 SSH 实现转发端口 8080,则可以通过使用本地端口将 URL 传递到 MediaPlayer 或 ExoPlayer 或您将用于播放的任何内容来轻松加载它。
【讨论】:
非常感谢您提供如此有用的回复!只是一个简单的问题,我会使用 SFTP 访问文件吗?还有,您传递到格式为localhost:8080/video.mp4 的媒体播放器的 URL 是否只是为了澄清? @Liz 不行,sftp 太简单了,不能像这样传输steam。 太好了,为了澄清,这是设置新 Jsch 会话后读取此 http 服务器的 java 脚本:camsession.setPortForwardingR(8030, "192.168.0.217",23); camsession.connect(); ChannelShell CamChannel = (ChannelShell) camsession.openChannel("shell"); CamChannel.connect(); vidView.setVideoPath("localhost:8030/video.mp4"); vidView.start(); @Liz 不完全是,更像int port = setPortForwardingL(0, "127.0.0.1", 8080)
和setVideoPath(String.format("http://localhost:%d/video.mp4", port))
。以上是关于使用基于 android studio 构建的 android 应用程序进行 Jsch X11 转发的主要内容,如果未能解决你的问题,请参考以下文章