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 上出现错误 的相关文章

  • 计算Android设备的PPI

    如何计算 Android 设备的 PPI 最特别的是 Android 平板电脑 请注意 我想计算设备的 PPI 而不是 DPI 就像一二三一样简单 让我们来计算一下PPI to Nexus 5 例如 float LCD Diagonal 4
  • 如何获取之前的碎片?

    为了在我的应用程序中重用某些片段 我需要知道哪个片段是返回堆栈上的第二个片段 为了做到这一点 我正在使用getFragmentManager getFragments 显示以下错误 但有效 FragmentManager getFragme
  • Android webview 滚动不起作用

    我正在尝试在网络视图中向下滚动到页面底部 我正在使用谷歌在其教程中提供的网络视图示例 我正在使用这行代码来尝试滚动 但它不起作用 mWebView pageDown true 关于如何使其以编程方式滚动有什么建议吗 谢谢 public cl
  • Android 在打开应用程序时会广播吗?

    例如 如果我想知道Youtube何时打开 是否有与之相关的广播 我当然知道我可以轮询 logcat 消息来检查活动 但我可以通过广播来做到这一点吗 因为它会少得多的耗电 此链接似乎表明这是不可能的 如何跟踪 Android 中的应用程序使用
  • FTS3 在 ORMLite 中搜索?

    我对 FTS3 一无所知 除了http developer android com guide topics search search dialog html http developer android com guide topics
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • Android 服务是否有办法检测设备何时锁定?

    我有一个 Android 服务 我希望在设备锁定时执行操作 我想澄清一下 我对屏幕开 关状态不感兴趣 我知道如何使用带有 Intent ACTION USER PRESENT 和 KeyguardManager inKeyguardRest
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 获取手机的 z 轴和磁北极(而不是 y 轴)之间的角度

    我知道如何使用 getOrientation 方法获取手机 y 轴和磁北之间的方向角 如此处所述https developer android com guide topics sensors sensors position https
  • Android:滚动 Horizo​​ntalScrollView 时如何禁用 ScrollView 的垂直滚动?

    我正在开发一个带有带有 ScrollView 的 Activity 的 Android 应用程序 其中包含 Horizo ntalScrollView 等内容 当我触摸 Horizo ntalScrollView 时 我想禁用外部 Scro
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • 如何在基本活动中使用 ViewBinding 的抽象?

    我正在创建一个基类 以便子级的所有绑定都将设置在基类中 我已经做到了这一点 abstract class BaseActivity2 b AppCompatActivity private var viewBinding B null pr
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • 单元测试时 Android Studio 2.0 中测试状态终止且没有任何失败消息

    Issue 我昨天在 Ubuntu 上从 1 5 升级到了 Android Studio 2 0 当我在 Android Studio 2 0 中进行单元测试时 即使所有测试都已通过 它也会显示 终止测试 状态 有时它只显示部分测试通过 我
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme

随机推荐

  • 通过 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 对象时出现错误