Codenameone 代号一:如何进行流媒体直播

Codenameone 代号一:如何进行流媒体直播,codenameone,Codenameone,我想通过在代号为one的BrowserComponent中键入他的url来显示我的网络摄像头流 一个星期以来,我一直在尝试,但我的浏览器组件显示的是纯文本而不是图像 但如果我在其他标准浏览器(如Firefox)中尝试,它工作正常,我可以清楚地看到我的摄像头 因此,我想知道是否有一种解决方案可以使用代号为one的浏览器显示直播。 如果是,请告诉我在哪里可以找到样品或示例 谢谢您的请求可以通过多种方式实现。我不确定使用BrowserComponent是否是最好的选择,但是使用BrowserCompo

我想通过在代号为one的BrowserComponent中键入他的url来显示我的网络摄像头流

一个星期以来,我一直在尝试,但我的浏览器组件显示的是纯文本而不是图像

但如果我在其他标准浏览器(如Firefox)中尝试,它工作正常,我可以清楚地看到我的摄像头

因此,我想知道是否有一种解决方案可以使用代号为one的浏览器显示直播。 如果是,请告诉我在哪里可以找到样品或示例


谢谢

您的请求可以通过多种方式实现。我不确定使用
BrowserComponent
是否是最好的选择,但是使用
BrowserComponent
进行编码非常简单

首先,您必须在您的域上实现一个网页,该网页使用完全兼容的HTML5播放器播放视频。有几种不同程度的复杂性和成本的商业和免费解决方案

在我对你的问题的评论中,我提到了“JWPlayer”,但是昨天我检查了(不幸的是)像我这样的JWPlayer免费许可证(允许我自己主持播放器)对新用户来说不再可用。更准确地说,继2017年10月推出JW8之后,该播放器的自托管功能现在只对企业客户开放

然而,为了向您展示一个简单的解决方案,我在DaCast上注册了一个免费的30天试用帐户,它为您的视频点播和实时流媒体提供了一个播放器。在DaCast的后端,我上传了一个示例视频,然后得到了使用播放器的代码,类似于下面的代码(我混淆了
id
):


我测试了这个解决方案在一个真正的安卓系统上运行。当然,这个答案只是给你的一个提示,你可以很容易地复制和测试,我不打算宣传任何特定的商业服务。

另一个解决方案,使用
BrowserComponent.setURLHierarchy()

  • 创建一个名为
    html
    的文件夹,并将其放置在Codename One项目的文件夹
    /src
    中。这意味着您的HTML5播放器将被放置在文件夹
    /src/html
    中的html文件中。如果使用Netbeans IDE,该文件夹将显示为项目的一个包
  • 实现您的播放器(例如在
    /src/html/player.html
    中)。作为建议,您可以使用免费的开源解决方案+:如果您完成了正确的实现,它应该可以与浏览器一起使用。请注意,您可以将播放机所需的所有文件添加到
    /src/html/
  • 在您的应用程序中,使用类似以下代码
  • 代码:


    就这些。当然,最难的部分是实现HTML5播放器:如果你的应用程序可以连接到互联网,一个简单的解决方案就是使用CDN,使用videojs http流媒体链接页面中提供的代码示例。

    你是在设备中还是在模拟器中尝试?模拟器不能忠实地表示复杂HTML在设备上的作用方式。网络摄像头是否使用闪光灯?如果是这样的话,它在任何地方都不起作用嗨,我在用模拟器,你在用模拟器吗?(可能)这就是它不起作用的原因。在真实(最近)的设备上尝试您的代码。使用跨浏览器兼容的HTML5。例如,根据我的经验,“JWPlayer”是非常可移植的(我有免费的许可证),但也有其他免费的开源解决方案。您好@FrancescoGalgani谢谢您的回复,但我想知道如何将JWPlayer集成到代号为one BrowserComponent的组件中。有教程吗?嗨,弗朗西斯科·加尔加尼,谢谢你的回复。但有了这个解决方案,我不得不在互联网上发布我的视频和流媒体直播。不过,我希望有一个解决方案也能在具有专用IP地址的本地网络中工作。在这种情况下,我认为您需要实现一个本地web和流媒体服务器,并在本地服务器中托管一个html5播放器。或者,您可以使用
    browserComponent.setURLHierarchy(“/htmlFile.html”)在应用程序中包含本地html5播放器如本文所述:我阅读了所写内容,但我承认它不是很明确。播放器和html文件之间的关系是什么?在以下语句中:browserComponent.setURLHierarchy(“/htmlFile.html”);什么是htmlFile.html?必须包含播放器的html文件?我可以在本地web服务器上托管此文件吗?我必须用播放器的路径替换/htmlFile.html吗?如果是,它是哪个玩家?这里有一段html代码,是我为阅读视频而编写的,它适用于视频点播,但不适用于流媒体直播:嗨,我有一个带麦克风和扬声器的摄像头。我想在终端设备的浏览器和这个摄像头之间进行全双工音频通信。有没有可能使用代号1?如果是这样,我可以有一个教程吗?我建议你打开一个新的问题。如果有用的话,也请考虑接受一个答案。非常感谢Francesco Galgani,我要实现它!它回答了我前面的问题。
    
    <script id="xxxxxx_x_xxxxxx" width="590" height="431" src="//player.dacast.com/js/player.js"  class="dacast-video"></script>
    
    <!doctype html>
    <html lang="en">
    <head>
    <title>
    </title>
    <meta charset="UTF-8" />
    </head>
    <body>
    <script id="xxxxxx_x_xxxxxx" width="590" height="431" src="//player.dacast.com/js/player.js"  class="dacast-video"></script>
    </body>
    </html>
    
    Form hi = new Form("Video test", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE));
    if (BrowserComponent.isNativeBrowserSupported()) {
        BrowserComponent browser = new BrowserComponent();
        browser.setURL("https://www.yourdomain.com/test.html");
        hi.add(BorderLayout.CENTER, browser);
    } else {
        hi.add(BorderLayout.NORTH, "Your device is not supported");
    }
    hi.show();
    
    Form hi = new Form("Video player", new BorderLayout());
    if (BrowserComponent.isNativeBrowserSupported()) {
        BrowserComponent browser = new BrowserComponent();
        browser.setURLHierarchy("/player.html");
        hi.add(BorderLayout.CENTER, browser);
    }
    hi.show();