基于webrtc的资源释放问题(一)

    ——重复释放webrtc的相关资源

背景:

  视频通讯大都只是作为一个功能存在于各种应用中,比如微信,qq 。既然只是应用的一部分,这样就涉及反复的开启和关闭视频通信的功能的问题了,那么对于基于webrtc的通信功能来说,就涉及到了反复的获取和释放webrtc相关的资源的问题了,本博文的目的就是说说这个过程中会遇到的问题。

最近一段时间在做基于webrtc的android应用在释放资源时遇到一些问题,现在记录下来用于备忘。

官方给出的AppRTCDemo太过于简单很多问题没涉及到。

1、释放peerconnection资源的问题。

  场景:A和B进行通话(视频通话)

     现在B中终止通话

  错误:在B终止通话之后,A端的程序程序会意外退出。

  分析:在A和B进行通话的时候会见了相应的PeerConnection类实例,这个实例保存的有stream的引用(localstream和remote stream等等)。

     B在终止通话时就要释放和A进行通话时建立的PeerConnection类的实例.这时候就会出现问题,A在释放peerconnection实例的时候会把localstream给释放掉,而localstream自己还在使用,这时候程序就会意外终止。

  解决办法:在是放peerconnection实例的时候不要释放本地的localstream只释放remote stream。单独定义事件来触发localstream的释放。

2、释放整个webrtc模块的问题。

  场景:A和B进行通话,B终止通话,B再进行视频通话

  错误:B再次进行视频通话的时候意外终止

  分析:B再次进行视频通话的时候,由于上次退出视频通话的时候camera资源没有释放,但是再次进行视屏通话的时候无法获得camera资源。

     这里看似是没有获得camera资源的问题,其实是我们在使用完webrtc资源之后没有及时释放的问题。

  解决办法:真确的释放相应的资源,我的步骤如下:

      1、挂断所有正在通信的视频通话(hangupall())(释放peerconnection实例)

      2、释放localstream

      3、释放camera资源(VideoSource.dispose() 方法)

      4、释放PeerConnectionFactory资源

   即使是这样在我频繁的打开和关闭视频通话的时候程序仍然会有一定的概率会出错。希望各位能够帮忙纠正我的错误。

基于webrtc的资源释放问题(一)的更多相关文章

  1. 基于webrtc的资源释放问题(二)

    基于webrtc的资源释放问题(二) ——建立连接的过程中意外中断 应用背景: 我们在打电话的时候会不会遇到这种情况?打电话的时候未接通之前挂掉了电话,或者在接通之后建立的连接的过程中挂掉电话? 特别 ...

  2. 基于 Android NDK 的学习之旅-----资源释放

    做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉.因为我是学Java 开始的,所以对主动释放内存没多大概念(GC直接帮忙回收),后查询原因才知道是因为JNI 有些对 ...

  3. 基于 WebRTC 技术的实时通信服务开发实践

    随着直播的发展,直播实时互动性变得日益重要.又拍云在 WebRTC 的基础上,凭借多年的开发经验,结合当下实际情况,开发 UPRTC 系统,解决了网络延时.并发量大.客户端解码能力差等问题. WebR ...

  4. C#内存泄露与资源释放 经验总结

    本文链接:http://blog.csdn.net/yokeqi/article/details/41083939 C#相比其他语言,拥有强大的垃圾回收机制,但并不是这样,你就可以对内存管理放任不管, ...

  5. 基于Quick-cocos2d-x的资源更新方案 二

    写在前面 又是12点半了,对于一个程序员来说,这是一个黄金时间,精力旺盛,我想,是最适合整理和分享一些思路的时候了. 自从上次写了 基于Quick-cocos2d-x的资源更新方案 同样可见quick ...

  6. Android IOS WebRTC 音视频开发总结(二五)-- webrtc优秀资源汇总

    本文主要整理一些webrtc相关资料供学习(会持续更新),转载请说明出处,文章来自博客园RTC.Blacker,欢迎关注微信公众号:blackerteam ---------------------- ...

  7. C#资源释放

    转自:http://www.cnblogs.com/psunny/archive/2009/07/07/1518812.html 深刻理解C#中资源释放 今天我的一个朋友看到我写的那篇<C#中用 ...

  8. 关于基于webrtc的android-apk 和 webrtc-brows

    这一段时间我在做一些关于基于webrtc应用的一些研究,做个一个android的demo,详情如下: 手机客户端:   基于webrtc的 android apk   (webrtc 代码版本 R67 ...

  9. TList,TObjectList 使用——资源释放

    TOjectList = Class (Tlist); TOjectList继承Tlist,从名字上看就可以知道它是专门为对象列表制作的,那么他到底丰富了那些功能呢? 首先是 TObject 作为对象 ...

随机推荐

  1. traits的使用

    trait的作用是可以在任何地方使用trait中的方法. trait的定义与定义类相同,定义实例如下: trait tSoneTrait{ //定义一些属性 function someFunction ...

  2. thinkphp上传至服务器后模板无法解析原因

    前几日做好的响应式静态页面上传至虚拟空间,打开网址地址出现: 模板不存在:./app/Home/View/Index/index.html 错误位置 FILE: /home/u333385714/pu ...

  3. 安装wampserver之后,浏览器中输入localhost页面显示IIS7解决办法

    1.wampserver图标为绿色才为正常启动,如果为橘色说明端口(默认为80)被占用:可以点击图标,然后点Apache->Service->测试80端口,来验证端口是否被占用. 如果占用 ...

  4. sublime3+quick智能提示

    sublime3+quick智能提示 1. 安装PackegeControl 下载 https://sublime.wbond.net/Package%20Control.sublime-packag ...

  5. Linux下一些有用的指令

    1.   安装源代码包用到的configure 这用来定位安装位置. 用法: ./configure -prefix=<安装目录>,  前提是文件中有configure执行文件.

  6. 阶乘之和--nyoj91

    描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No: 输入 第一行有一个整数0<m<10 ...

  7. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  8. Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)

    请版主把我之前发的那个帖子删了!因为所有的图全部挂了,所以麻烦版主了…… 安装中出现五国的话就请进入这里看看是那里的错误http://bbs.pcbeta.com/viewthread-863656- ...

  9. 【转】发布一个基于NGUI编写的UI框架

    发布一个基于NGUI编写的UI框架 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面 ...

  10. C#编程利器之三:接口(Interface)【转】

    C#编程利器之三:接口(Interface) C#接口是一个让很多初学者容易迷糊的东西,用起来好象很简单,定义接口,然后在里面定义方法,通过继承与他的子类来完成具体的实现.但没有真正认识接口的作用的时 ...