一尘不染

如何实现Web应用程序的屏幕共享?

java

序言
。我想问一下,如何为网络上的桌面屏幕共享创建解决方案,但是后来发现有很多这样的问题。要用几串来回答这个任务是相当复杂的。所以我花了一些时间试图找到合适的解决方案。看来我找到了一个–只想分享。

首要任务 :我们有一个Web应用程序。我们需要找到一种让用户与其他任何用户共享其屏幕的方式。实施于:Win 7
x64,Java,Wowza-3.5.0。

我们怎样才能做到这一点?


阅读 338

收藏
2020-12-03

共1个答案

一尘不染

整个过程用几句话讲:
通过JavaWebStart(jlnp)的帮助下,网页上的链接,用户启动了用Java编写的Swing应用程序,该应用程序每秒对他的桌面进行截图。之后,它将其编码为视频流,并将该流发送到Wowza服务器。Wowza可以将此流重播给任意数量的用户,这些用户可以通过Flash
Player访问该流。

详细步骤:

1.安装Wowza(强制性)。

  • 从此处获取适当的安装程序(以Win为例):http : //www.wowza.com/pricing/installer
  • 从此处获取免费的开发人员许可证:http : //www.wowza.com/pricing/trial(您需要提供电子邮件,在那里将发送有效期为180天的密钥)。
  • 跟随有关过程的精彩视频:http : //www.wowza.com/forums/content.php? 288-Getting-Started-(Video- Tutorial)

此外,我将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] \ examples
  • RightMouse单击 installall.bat, 然后选择“以管理员身份启动”以安装所有必需的播放器。
  • 输入dir [wowza-root] \ examples \ VideoOnDemandStreaming \ FlashHTTPPlayer ,然后单击 player.html 在浏览器中启动此文件。单击连接。 步骤检查 :您应该看到关于兔子的有趣电影。您可以在此处将这部电影 归档[wowza-root] \ content \ sample.mp4

3. SWING-app共享您的桌面(强制性)。

好的,我们的服务器已启动并正在运行(WOWZA正在运行)。现在是时候启动将为我们的桌面截图的应用程序了。幸运的是,它已经由Dele
Olajide撰写,愿上帝保佑这个人。检查此链接的详细信息(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

哪里

  • “ C:\ Program Files \ Java \ jdk1.6.0_26 \ bin \ java” –正确的Java路径
  • screenshare.jar –我们应该使用哪个jar(可以在解压缩的文件夹中找到)。
  • org.redfire.screen.ScreenShare –主类
  • 本地主机– Wowza的主机
  • 屏幕共享–应用程序名称(重要)
  • 1935年– Wowza港口
  • ss1 –流名称(重要)
  • flashsv1 –视频流的编码。

您唯一需要更改的-是设置Java的正确路径。您可以立即启动它!

步骤检查
:您应该看到应用程序屏幕。巨大的成功!但是,如果单击“开始共享”按钮,则会在控制台中出现错误,Wowza中缺少该screenshare应用程序文件夹。没关系,这意味着我们现在在正确的轨道上。退出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的流(强制性)。

  • 输入 [wowza-root] \ applications 并在其中创建名称为 screenshare的 文件夹(请注意-这与我们的SWING应用程序中的application-name完全相同)
  • 输入 [wowza_root] \ conf, 然后再次创建文件夹 screenshare
  • [wowza_root] \ conf中, 您可以找到一个名为 Application.xml 的文件。将此文件复制到您刚创建的 [wowza_root] \ conf \ screenshare 文件夹中。
  • 更改 Application.xml中的 某些属性。设置以下值:

StreamType =实时HTTPStreamers = cupertinostreaming,平滑流,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目录启动播放器,并且网络上的其他人也无法访问它。所以–有什么问题,让我们部署一个。

  • 首先,您需要阅读以下内容:http : //www.wowza.com/forums/content.php?49
  • 接下来转到http://www.osmf.org/configurator/fmp/#
  • 在“视频源”字段中插入指向您的流的链接(当然,SWING-APP应该在共享模式下工作): rtmp:// localhost:1935 / screenshare / ss1
  • 单击预览。您应该会看到流。
  • 现在,只需将整个代码从“预览嵌入代码”复制到应用程序服务器上实际部署的任何网页即可,仅此而已。您可以将此页面的链接提供给任何用户,他将可以看到您的信息流。

7.转到动态流名称,而不是静态(可选)

您可能已经注意到,目前我们的屏幕共享功能正在运行,但是由于我们通过config向SWING-
APP提供流名称,因此无法同时为一个以上的用户使用它。我不会详细描述如何处理,仅作简短说明。

如果您检查 screenshare.jar,
您会发现此jar实际上包含SWING应用程序的所有已编译和源代码。可以根据您的需要修改源代码并重新制作初始应用程序。就我而言,我只是将当前时间(以毫秒为单位)添加到提供的流名称和消息窗口中,该窗口在单击“开始流”按钮后显示如下内容:

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的帮助下,我从请求字符串中提取了参数,并将提取的参数放在应该带有第6页嵌入式代码的html页面上的位置

<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>

就这些。我希望这可以节省一些时间。祝好运

2020-12-03