在原生应用中使用WebRTC

11

我的问题是:

1 -- 我的原生应用程序中是否可以拥有一个 WebView(由 Native 框架提供) 实例,并扩展它以支持 Webrtc?

如果 1 是 Yes,那么可能的行动项如下:

1 -- 在 Android 上构建 webrtc,2 -- 在 Android WebView 中扩展 Javascript 以将 Webrtc 调用耦合 / 绑定,

请确认..

我的目标是

1 -- 我们有基于 webrtc 的语音/视频聊天应用程序在 Chrome 和 Mozilla 桌面浏览器上正常工作,因为两者都带有 webrtc...,也就是说用户需要访问 www.xyz.com,它将开始视频/语音会话,

2 -- 手机端也是同样的情况,我们想要做成原生应用程序,即我们正在尝试制作一个应用程序,它将具有本地 WebView 实例,在其中我们将访问 www.xyz.com 以进行语音/视频会话

3 -- 我尝试了第二种方式,但似乎在应用程序框架提供的 WebView 实例中没有启用 webrtc,所以我正在尝试添加它,这就是我在思考的内容,

-- WebView 实例有一些机制来扩展 Javascript,这意味着 http://dev.w3.org/2011/webrtc/editor/webrtc.html 我需要将其中一些 API 添加到 WebView 中,如果我能成功地集成和构建 Webrtc 在 Android 和 iOS 平台上,它们的实现将会出现。

请评论....


嗨Amitg2k12,我看到了你的评论。但是我不知道你想做什么。你说你想在应用程序中使用WebView,并扩展支持webrtc。让我困惑的是,重点是WebView还是webrtc本身?如果webrtc是重点,为什么要使用WebView?webrtc本身可以在Android上构建和使用,没有必要使用WebView和JS。如果您的应用程序已经使用WebView进行了结构化,并且只想将webrtc功能添加到其中,我应该说抱歉,因为我没有关于JS的webrtc信息,我只是使用JNI + NDK构建了webrtc的独立音频处理模块。所以请说得更清楚一些 :) - Bill Hoo
@billhoo:感谢您的关注,我已经相应地编辑了问题,希望现在更加清晰明了。 - Amitg2k12
我明白你的意思。但是我没有WebView开发经验。而且WebRTC似乎现在不支持移动浏览器。无论如何,我发现很多人都像你一样问同样的问题,并找到了这些网站1.https://groups.google.com/forum/#!msg/discuss-webrtc/XiMzboUM-ic/2luLWmB_i0YJ 2.[https://dev59.com/h2_Xa4cB1Zd3GeqP2IUP 3.http://caniuse.com/#feat=stream可能会对你有所帮助,希望我能帮到你。 - Bill Hoo
我认为这个链接涉及到与“音频处理”相关的每一个答案,无论是“预处理”还是“后处理”:Android_Audio_Processing_Using_WebRTC,您也可以访问这个参考链接:https://dev59.com/763la4cB1Zd3GeqPGQvi#58546599 - Muhammad Usman Bashir
7个回答

7
如果你想在原生应用中使用webRTC,我已经开发了一个小型的Android应用程序(https://github.com/pchab/AndroidRTC),该应用可以将后置摄像头共享到一个nodeJS服务器(https://github.com/pchab/ProjectRTC)。 我发现使用libjingle库最简单的方法是使用IntelliJ IDEA。我在Eclipse和Android Studio中遇到了很多问题。

2
嘿!你的两个链接都已损坏。你是否仍在其他地方托管这些存储库? - Dany Joumaa
链接可用,但问题是我无法设置这个服务器。他们说它将在3000端口上启动。但它总是崩溃 :( - Abdul Mohsin
1
现在使用Android Studio,只需添加依赖项 - implementation 'org.webrtc:google-webrtc:1.0.+'即可轻松实现。请查看此示例项目 - user2230793

3
你将会在WebView上遇到困难,尽管它在(较新的)Android上得到了改进。而对于iOS来说,目前没有类似的解决方案。
如果你想要完全本地化,你可以查看我们在FM上使用IceLink所做的工作,听起来可能适合你。

2

2

目前,Android WebView不支持WebRTC API。

虽然正在进行Java和Objective-C绑定的工作,但这可能无法解决您的问题。


今天 WebView V36 支持 WebRTC https://developer.chrome.com/multidevice/webview/overview - Krystian

1
我正在构建一个使用Webview和WebRTC视频的本地应用程序。 通常情况下,可以构建这样的应用程序,现在Chromium(Webview)有官方支持 https://developer.chrome.com/multidevice/webview/overview ,但是在编写该应用程序期间,我遇到了很多问题。
一些问题包括:
  • 支持手机和操作系统版本 - 我使用的是安卓5.1.1(Xperia M2),经过很多问题,webrtc正在运行。在安卓6上(Xperia Z5 Compact)无法运行...在其他手机上有时可以工作,有时不能...
  • 您无法确定webview将如何工作 - 今天webrtc正在工作,但明天Google可能会添加一些安全规则,它将不起作用- 它有点不稳定,并且据我所见,某些事情取决于os编译。WebView可以独立于操作系统从商店获得更新。
  • 权限 - 有很多愚蠢的问题,基于这样一个事实,即它是本地应用程序中的浏览器,例如 - 您无法期望从webview获得权限问题,您必须在android webview配置中实现它,在某些安卓版本中它可以工作 - 在其他版本中则不行:-)
  • 仍然存在许多“年轻产品”的问题 - 例如,现在webview在设备信息显示方面存在一些问题(例如相机是前置还是后置),因此您必须找到解决此类问题的方法。
  • 视频质量差 - 目前我的问题是视频质量-手机上的视频质量很好,在最大资源消耗(CPU,网络,内存)以下,但计算机上的视频质量真的很差...
  • ...还有很多其他问题

事实是,这是可能的,但仍然不足以在没有面临很多不易解决的问题的情况下使用。


1

我知道这个问题有点老,但我发现 Crosswalk(https://crosswalk-project.org/)是在 Android 应用程序中使用 WebRTC 的相当不错的解决方案。Crosswalk 的作用是将 Chromium 浏览器编译成一个 Android 应用程序,并将您的网站托管在这个 Chromium 内部,因此您将拥有对最新浏览器功能(如 WebRTC)的支持。


如果您使用Android L/5.0或更高版本中的WebView,则不再需要Crosswalk。 - Greg T
Crosswalk目前在WebRTC方面存在一个重大的bug:https://crosswalk-project.org/jira/browse/XWALK-7030 - 000000000000000000000

0

你实际上可以使用html5功能进行本地化。所以,如果你像之前提到的那样使用Crosswalk,但是如果你真的不想使用:Crosswalk/Ionic/Angular/Cordova(这很棒),你仍然可以在本地环境中使用Crosswalk来替换不一致和缺乏功能的WebViews,使用基于Blink引擎的1个单一、完整的WebRTC兼容WebView。

我记得读过一些关于如何在Android Studio中使用Crosswalk的指南,这里是我快速搜索到的一个,但只要在Google上搜索就会有很多。 https://www.snip2code.com/Snippet/34721/How-to-use-CrossWalk-runtime-within-an-A


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接