关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
8 个月前关闭。
Improve this question
序言 .我想问,如何在网络上创建桌面屏幕共享的解决方案,但后来发现有很多这样的问题。用几个字符串来回答这个任务是相当复杂的。所以我花了一些时间试图找到合适的解决方案。似乎我找到了一个——只是想分享它。
初始任务 : 我们有一个网络应用程序。我们需要找到一种方法让用户与任何其他用户共享他的屏幕。实现于:Win 7 x64、Java、Wowza-3.5.0。
我们怎样才能做到这一点?
最佳答案
整个过程简而言之:通过网页上的链接,在 JavaWebStart (jlnp) 的帮助下,用户启动用 Java 编写的 Swing 应用程序,每秒生成一个桌面屏幕截图。在此之后,它将其编码为视频流并将此流发送到 Wowza-server。 Wowza 能够将此流重新传输给任意数量的用户,这些用户可以通过 Flash 播放器访问流。
详细步骤:
1.安装Wowza(强制)。
此外,我将 wowza 安装目录称为 [wowza-root]
步骤检查:安装完成后——开始——所有应用——Wowza Media Server 3.5.0——Wowza启动。当服务器启动时,您会看到消息
“Wowza Media Server is started!”
打开浏览器并输入:
http://localhost:1935/
您应该会看到如下内容:
Wowza Media Server 3 Developer Edition (Expires: авг 03, 2013) 3.5.0 build2989
如果是这样 - 我们完成了第一步。
2. 在 Wowza 上启动示例电影(可选)。
下一步 - 实际流式传输一些内容,[wowza-root] 拥有它所需的一切。
步骤检查 : 你应该看看关于兔子的有趣电影。你可以在这里提交这部电影: [wowza-root]\content\sample.mp4
3. SWING-app 共享您的桌面(强制)。
很好,我们的服务器启动并运行(WOWZA 正在运行)。现在是时候启动可以对我们的桌面进行屏幕截图的应用程序了。幸运的是,它已经是德莱奥拉吉德写的,上帝保佑这个人。查看此链接以获取详细信息( http://code.google.com/p/red5-screenshare/ ),此链接用于下载( http://code.google.com/p/red5-screenshare/downloads/list )——您需要下载 screenshare.zip 文件。
解压到任意目录。我们将首先从 bat 文件启动这个应用程序。解压后的目录下已经有两个bat文件—— do_run1.bat 和 do_run2.bat .我只是复制了其中一个文件并将其命名为 do_run_my.bat 它的内容应该是这样的:
"C:\Program Files\Java\jdk1.6.0_26\bin\java" -classpath screenshare.jar org.redfire.screen.ScreenShare localhost screenshare 1935 ss1 flashsv1
pause
在哪里
您唯一需要更改的是设置正确的 java.util 路径。你现在可以启动它!
步骤检查 :您应该会看到应用程序屏幕。巨大的成功!但是,如果您单击“开始共享”按钮,您将在控制台中收到错误消息,即 Wowza 中缺少该屏幕共享应用程序文件夹。没关系,这意味着现在我们走在正确的轨道上。退出 SWING 应用程序。
[ERROR] [New I/O client worker #2-1] org.redfire.screen.ScreenClientHandler - closing channel, server resonded with error: [0 COMMAND_AMF0 c3 #0 t0 (0) s207] name: _error, transactionId: 1, object: null, args: [{level=error, code=NetConnection.Connect.Rejected, description=Connection failed: Application folder ([install-location]/applications/screenshare) is missing., clientid=8.87236417E8}]
4. 配置 WOWZA 以接受来自我们 SWING APP 的流(强制)。
流类型=直播
HTTPStreamers=cupertinostreaming,smoothstreaming,sanjosestreaming
LiveStreamPacketizers=cupertinostreamingpacketizer、smoothstreamingpacketizer、sanjosestreamingpacketizer
PlayMethod=none
步骤检查:通过 bat 文件再次启动 SWING-APP。现在你应该看到这样的东西而不是错误,这意味着与服务器的连接已经建立:
[INFO] [New I/O client worker #1-1] org.redfire.screen.ScreenClientHandler - onStatus code: NetStream.Publish.Start
+++ [0 VIDEO c5 #1 t166 (0) s255355]
+++ [1 VIDEO c5 #1 t1169 (1003) s116522]
+++ [1 VIDEO c5 #1 t2171 (1002) s53049]
+++ [1 VIDEO c5 #1 t3178 (1007) s53667]
5. 观看您的直播(可选)。
现在是最令人愉快的部分——看看所有这些员工是如何一起工作的。
- 输入 [wowza-root]\examples\LiveVideoStreaming\FlashRTMPPlayer** 并启动 **player.html .请注意,在下面的两个参数中使用了应用程序名称和流名称,完全相同,就像我们在 SWING-APP 中配置的一样。
Server: rtmp://localhost/screenshare
Stream: ss1
然后点击“连接”按钮。
步骤检查 :您将看到您的共享桌面!这样任务就完成了——至少是它的初始阶段。
6. 在网页上启动 flash-player(可选)
伟大的!现在我们有了可行的解决方案,只有一件事还没有完成——我们正在从 Windows 目录启动播放器,网络上的其他人无法访问它。所以 - 有什么问题,让我们部署一个。
7. 使用动态流名称而不是静态(可选)
您可能已经注意到,现在我们的屏幕共享正在运行,但由于我们通过配置向 SWING-APP 提供流名称,因此无法同时为多个用户使用它。我不会详细描述如何处理它,只是做一个简短的说明。
如果您检查 screenshare.jar 你会发现这个 jar 实际上包含了 SWING-application 的所有编译和源代码。可以根据您的需要修改源和返工初始应用程序。在我的情况下,我只是将当前时间(以毫秒为单位)添加到提供的流名称和消息窗口中,该窗口在单击“开始流”按钮后显示如下内容:
Send this link to any person you want to share you screen with:
http://localhost:8080/player.htm?src=rtmp%3A%2F%2Flocalhost%3A1935%2Fscreenshare%2Fss1360243745881
正如您在链接中看到的那样 - 我只是将流地址作为查询字符串添加到带有嵌入式播放器代码的 html 页面所在的 URL 中。我也想提供这个页面的代码。它非常简单 - 在 javascript 的帮助下,我从请求字符串中提取了参数,并将提取的参数放在我的 html 页面上应该使用 p.6 中的嵌入代码的位置
<html>
<head></head>
<body>
<SCRIPT LANGUAGE="JavaScript">
var myQueryString = document.location.search;
// remove the '?' sign if exists
if (myQueryString[0] = '?') {
myQueryString = myQueryString.substr(1, myQueryString.length - 1);
}
document.write(
'<object width="600" height="409">\n' +
'<param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" />\n' +
'</param>\n' +
'<param name="flashvars" value="' + myQueryString +'" />\n' +
'</param>\n' +
'<param name="allowFullScreen" value="true" />\n' +
'</param>\n' +
'<param name="allowscriptaccess" value="always" />\n' +
'</param>\n' +
'<embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="409" flashvars="' + myQueryString +'"></embed>\n' +
'</object>'
);
</SCRIPT>
</body>
</html>
就这些。我希望它会为某人节省一些时间。祝你好运
关于java - 如何实现网页应用的屏幕共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755601/