new PeerConnectionFactory() 在 android 上出现错误

2024-01-24

我正在尝试在 Android 上实现 WebRTC DataChannel。我想创建一个简单的对等连接对象,它将打开 DataChannel 以使用 WebRTC 通过网络发送数据。当我尝试创建 PeerConnection 对象时出现错误。我了解到我们使用工厂来创建对等连接对象factory.createPeerConnection().

为此,我必须首先创建 PeerConnectionFactory 对象。之后,我可以使用它来创建 PeerConnection 对象。我收到错误Could not find method android.media.MediaCodec.setParameters and Fatal Signal 11 (SIGSEGV) at 0x00000000 (code=1)当我尝试创建 PeerConnectionFactory 对象时。我还尝试了以下代码PeerConnectionFactory.initializeAndroidGlobals(this, false, false, false);这就是我正在尝试做的:

PeerConnectionFactory factory = new PeerConnectionFactory();

peer = new Peer();

这就是我的 Peer 对象的样子:

public class Peer implements SdpObserver, PeerConnection.Observer, DataChannel.Observer {

    private PeerConnection pc;
    private DataChannel dc;

    public Peer() {

      this.pc = factory.createPeerConnection(RTCConfig.getIceServer(), 
              RTCConfig.getMediaConstraints(), this);

      dc = this.pc.createDataChannel("sendDataChannel", new DataChannel.Init());

    }

    @Override
    public void onAddStream(MediaStream arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onDataChannel(DataChannel dataChannel) {
        this.dc = dataChannel;

    }

    @Override
    public void onIceCandidate(final IceCandidate candidate) {
        try {
            JSONObject payload = new JSONObject();
            payload.put("type", "candidate");
            payload.put("label", candidate.sdpMLineIndex);
            payload.put("id", candidate.sdpMid);
            payload.put("candidate", candidate.sdp);

            sendSocketMessageDataChannel(payload.toString());


          } catch (JSONException e) {
            e.printStackTrace();
          }

    }

    @Override
    public void onIceConnectionChange(IceConnectionState iceConnectionState) {

    }

    @Override
    public void onIceGatheringChange(IceGatheringState arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onRemoveStream(MediaStream arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onRenegotiationNeeded() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSignalingChange(SignalingState arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onCreateFailure(String msg) {
        Toast.makeText(getApplicationContext(),
                msg, Toast.LENGTH_SHORT)
                .show();

    }

    @Override
    public void onCreateSuccess(SessionDescription sdp) {
        try {

            JSONObject payload = new JSONObject();
            payload.put("type", sdp.type.canonicalForm());
            payload.put("sdp", sdp.description);

            sendSocketMessageDataChannel(payload.toString());

            pc.setLocalDescription(FilePeer.this, sdp);

          } catch (JSONException e) {
            e.printStackTrace();
          }

    }

    @Override
    public void onSetFailure(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSetSuccess() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onMessage(Buffer data) {
        Log.w("FILE", data.toString());

    }

    @Override
    public void onStateChange() {

        Toast.makeText(getApplicationContext(),
                "State Got Changed", Toast.LENGTH_SHORT)
                .show();

        /*
         byte[] bytes = new byte[10];

         bytes[0] = 0;
         bytes[1] = 1;
         bytes[2] = 2;
         bytes[3] = 3;
         bytes[4] = 4;
         bytes[5] = 5;
         bytes[6] = 6;
         bytes[7] = 7;
         bytes[8] = 8;
         bytes[9] = 9;

         ByteBuffer buf = ByteBuffer.wrap(bytes);



         Buffer b = new Buffer(buf, true);

         dc.send(b);
        */
    }

}

有人可以向我指出在 Android 上实现 DataChannel 的任何示例源代码吗?如果我没有以正确的方式做这件事,也请告诉我。我找不到 Android Native WebRTC 的文档来说明如何做到这一点。我正在尝试实现我从在网络上使用 WebRTC 中学到的一切。

如果我的问题不清楚,请告诉我。


PeerConnectionFactory 不再需要初始化音频和视频引擎即可启用。

PeerConnectionFactory.initializeAndroidGlobals(this, false, false, false);

现在您将能够禁用音频和视频并使用数据通道

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

new PeerConnectionFactory() 在 android 上出现错误 的相关文章

  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • Android ToggleButton 始终检查

    如果切换按钮处于选中或取消选中状态 我想存储在 SharedPreferences 中 toggle setOnCheckedChangeListener new OnCheckedChangeListener public void on
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • Cordova - 启动后出现白屏,控制台中没有例外

    我已经离开我的 Cordova 应用程序一段时间了 但昨天刚刚进行了一次新的克隆 发现它出现了 死机白屏 症状 启动画面显示 程序加载 然后我就得到一个空白屏幕 更多细节 CLI 科尔多瓦 6 1 1 安卓 5 1 1 ios 4 1 1
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 无法在 Android Studio 中导出签名的 APK

    当我使用keytool list keystore path to keyfile jks并提供我的密码 我可以看到那里的条目 但是当我在尝试使用相同的密码生成签名的 APK 时使用相同的密码时 我收到错误 无法加载密钥库 密钥库被篡改 或
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • 蓝牙 BLE Android 以最大吞吐量写入外设

    我们公司开发了一个具有蓝牙 BLE 的硬件单元 并且我们在 Nexus 7 2013 中有一个服务应用程序 我们希望使用它向该单元发送固件文件 文件最大可达 500kb BT芯片是德州仪器CC2540 我浏览了大量的页面 并扫描了 Stac
  • CoordinatorLayout 和 ImageView 在滚动时调整宽度的问题

    我正在尝试放置一个ImageView in a CollapsingToolbarLayout它在加载时占据整个屏幕 并且当您滚动内容时 16x9 分辨率图像宽度会调整大小 直到图像占据屏幕的整个宽度 那时 我希望图像具有视差app lay
  • 自动删除 Firebase 通知

    我有一个问题 我都读过让通知在 5 分钟后消失 https stackoverflow com questions 15648699 make notification disappear after 5 minutes and 几秒钟后清
  • 在 NFC 标签扫描期间,onNewIntent() 内的intent.getAction() 为 null

    这是我第一次使用 NFC 标签 我在清单中声明了 NFC 扫描活动
  • Android 和 Google 地图内部片段以及其他控件和 viewpager

    我是android编程新手 我有一个带有 3 个页面 片段 的小应用程序 使用 pageradapter 和 viewpager 在它们之间滑动 其中一个页面包含复选框 和其他控件 和地图 我的问题是程序在启动时崩溃 Fragment co
  • Toast 消息消失后​​完成活动吗?

    有谁知道 是否有可能对 Toast 消息执行某些操作 在我的情况下完成活动 将被关闭 您只需创建一个Thread持续时间只要Toast显示 然后您就可以完成您的Activity public void onCreate Bundle sav
  • 如何在android中的谷歌地图上聚焦标记

    我只是想知道我们是否可以关注 Android 应用程序中添加的标记 如果是 怎么办 或者有没有其他方法可以完成这项任务 可以说我使用下面的代码添加了一个标记 map addMarker new MarkerOptions title tit
  • Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

    更新 我通过添加 previousMarker 对象解决了性能问题 因此 只有先前单击的标记将被删除并替换为默认图标 但是 当我单击标记时 信息窗口仍然不显示 我有一个地图视图并在上面设置了一些标记 我想要的是 当我单击一个标记时 它将其图
  • 以 HTML 格式发送电子邮件

    我想发送 HTML 格式的电子邮件 如下图所示 我怎样才能做到这一点 请帮我 提前致谢 String body new String table tr td br header td tr br br Get b Best Score b
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • Android 的代码覆盖率[重复]

    这个问题在这里已经有答案了 可能的重复 Android测试代码覆盖率 Eclipse https stackoverflow com questions 3282702 android test code coverage eclipse

随机推荐

  • 通过 nginx 访问时,php 在 /tmp/systemd-private-nABCDE/tmp 中有自己的 /tmp

    我发现奇怪的行为php and tmp文件夹 Php 在使用时使用另一个文件夹 tmp PHP 5 6 7 nginx php fpm 我以两种方式执行相同的脚本 通过浏览器和通过 shell 但是当通过浏览器启动时 文件不是真实的 tmp
  • Swift 结构内存泄漏

    我们正在尝试尽可能使用 Swift 结构 我们还使用 RxSwift 它具有采用闭包的方法 当我们有一个结构体创建一个引用的闭包时self 这会创建一个强引用循环 https developer apple com library ios
  • 在TestNG中使用@BeforeMethod时有没有办法获取方法元数据?

    我正在使用 TestNG 并有一套测试 我想在每个需要有关该方法的信息的测试方法之前执行一个操作 举一个简单的例子 假设我想在执行之前打印方法的名称 我可以编写一个带有注释的方法 BeforeMethod 如何将参数注入该方法 看看依赖注入
  • XPath:通过纯文本查找 HTML 元素

    请注意 这个问题是一个更精致的版本上一个问题 https stackoverflow com q 18655765 1839209 我正在寻找一个 XPath 它可以让我在 HTML 文档中查找具有给定纯文本的元素 例如 假设我有以下 HT
  • Python 3+ 在函数调用中导入包?

    随着时间的推移 我已经为各种事情建立了一系列实用函数 我想将它们全部放在包中 其结构比仅包含所有功能的单个文件要多一些 其中一些函数是在假设已导入某些包的情况下编写的 例如我有一些numpy and pandas假设类似的效用函数impor
  • FPDF - 在放置之前确定 MultiCell 的高度?

    基本问题 在将 MultiCell 放入文档之前是否可以确定其高度 原因 我的任务是创建 PDF 版本的表单 这种形式允许文本输入 并且结果长度可变 一个人可以不输入任何内容 另一个人可以写几段 当权者 不希望这段文字在页面之间中断 目前
  • 何时在 django ORM 中使用或不使用 iterator()

    这是来自关于查询集的 django 文档iterator method https docs djangoproject com en dev ref models querysets django db models query Quer
  • java:Java 15 中包 jdk.incubator.foreign 不可见错误

    所以我下载了 JDK 15 OpenJDK 在Intellij中运行以下代码 import jdk incubator foreign MemorySegment The problem seems to occur here in thi
  • 将 std::multimap 转换为 std::priority_queue

    我有一个使用编写的函数std multimap正是因为std multimap 经过分析 我意识到我只使用了std multimap as a heap 所以我尝试用std priority queue它只允许堆操作 希望这种用法会更快 当
  • ASP.NET MVC - 如何让用户确认删除

    他 我有这个页面 其中表格中的每个项目旁边都有复选框 并且希望允许用户选择其中的一些项目并按我的删除按钮 我只是无法想出 jquery 来制作确认窗口并仅在按下 是 时才提交 这是我的页面 table width 100 cellpaddi
  • Fortran 77 中的字符串数组

    我有一个关于 Fortran 77 的问题 但找不到解决方案 我正在尝试存储定义如下的字符串数组 character matname 255 255 这是一个由 255 个字符串组成的数组 长度为 255 后来我从文件中读取名称列表 并像这
  • Rails 3 邮件程序不工作并且不记录任何错误

    我已经尝试了各种配置 但仍然无法在我的开发环境中从 Rails 发送电子邮件 我安装了 mailutils 以从命令行尝试此操作 它起作用了 我收到了电子邮件 当然是垃圾邮件 echo test 邮件 s 主题 电子邮件受保护 cdn cg
  • 通过 TFS 发布定义中的电子邮件批准进行持续集成

    我正在使用 Microsoft Visual Studio Team Foundation Server 版本 14 102 25423 0 作为贵公司持续集成部署的一部分 我想实现以下内容 我创建了一个发布定义 并在其下配置了两个环境 Q
  • Android意图系统背后的基本原理

    我一直在寻找对此的解释 但找不到 我在一次工作面试中被问到为什么 Android 不允许通过意图传递任何类型 我很清楚可能性 序列化 实现 Parcelable 接口 捆绑等 我想了解拒绝有意传递自定义类型 对象的决定背后的基本原理 我被引
  • 返回之前测试属性是否不为 Null

    我有以下财产 public MyType MyProperty get set 我想更改此属性 以便如果值为空 它将首先填充该值 然后返回它 但是without使用私有成员变量 例如 如果我这样做 public MyType MyPrope
  • Sympy:指数相乘而不是总和指数相乘

    我正在搜索如何告诉 SymPy 使用指数乘法而不是总和的指数 也就是说 它当前给我 exp a b 我想要得到 exp a exp b 一定有一个相当简单的方法 但我似乎找不到 你可以使用expand http docs sympy org
  • 具有可变单元格大小的 UICollectionView

    我在 UICollectionView 中单元格的大小方面遇到了一些困难 在android中 你可以轻松地 包裹 cell的大小 就像在 iOS 中一样 您有一个函数调用 GetCell 您可以决定它的大小 iOS 中的区别在于 在 UIC
  • 逐行检查列中是否存在值并逐行更新新列

    在 R 中 如何检查每行列表中的任何值 例如 2 3 或 4 是否出现在三列中的任何一列中 然后更改第四列中的该行 假设我有一个 df A B C D 1 1 1 2 1 1 3 1 1 我想写 没有for循环 如果第 n 行 A 列或 B
  • 查找给定纬度和经度坐标的州

    我有一组 900 个纬度和经度坐标 我需要一个相对简单的方法来查找这些坐标引用的 州 如果有帮助的话 数据是excel格式的 谷歌提供了一个地理编码 https developers google com maps documentatio
  • new PeerConnectionFactory() 在 android 上出现错误

    我正在尝试在 Android 上实现 WebRTC DataChannel 我想创建一个简单的对等连接对象 它将打开 DataChannel 以使用 WebRTC 通过网络发送数据 当我尝试创建 PeerConnection 对象时出现错误