序言。我想问,如何在网络上创建桌面屏幕共享的解决方案,但后来发现有很多这样的问题。用几个字符串来回答这个任务非常复杂。所以我花了一些时间试图找到合适的解决方案。似乎我找到了一个——只是想分享它。
初始任务:我们有一个 Web 应用程序。我们需要找到一种方法让用户与任何其他用户共享他的屏幕。实现于:Win 7 x64、Java、Wowza-3.5.0。
我们怎样才能做到这一点?
序言。我想问,如何在网络上创建桌面屏幕共享的解决方案,但后来发现有很多这样的问题。用几个字符串来回答这个任务非常复杂。所以我花了一些时间试图找到合适的解决方案。似乎我找到了一个——只是想分享它。
初始任务:我们有一个 Web 应用程序。我们需要找到一种方法让用户与任何其他用户共享他的屏幕。实现于:Win 7 x64、Java、Wowza-3.5.0。
我们怎样才能做到这一点?
整个过程一言以蔽之:通过网页上的链接在 JavaWebStart (jlnp) 的帮助下,用户启动用 Java 编写的 Swing 应用程序,每秒都会对他的桌面进行截图。在此之后,它将其编码为视频流并将此流发送到 Wowza-server。Wowza 能够将此流重新传输给任意数量的用户,这些用户可以通过 flash-player 访问该流。
详细步骤:
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] 拥有它所需的一切。
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 的流(强制)。
更改Application.xml中的一些属性。设置此值:
StreamType=live HTTPStreamers=cupertinostreaming,smoothstreaming,sanjosestreaming LiveStreamPacketizers=cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer PlayMethod=none
现在重新启动 Wowza。
步骤检查:通过 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>
就这些。我希望它会为某人节省一些时间。祝你好运