使用基于 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 转发的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio Gradle构建脚本

Android Studio怎么用

Android Studio常用快捷键

为啥构建 ANE 需要 Android Studio / Eclipse?

探索 Android Studio

加速Android Studio/Gradle构建