基于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. 读《深入php面向对象、模式与实践》有感(三)

    命令模式: 第一次接触到这个命令模式的时候,感觉它很像一个简化的mvc框架.从不同的路径访问,再由控制器来判断所要调用的具体php文件. <?php class CommandContext{ ...

  2. HDU1134/HDU1133 递推 大数 java

    Game of Connections Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  3. NLP 自然语言处理

    参考: 自然语言处理怎么最快入门:http://www.zhihu.com/question/ 自然语言处理简介:http://wenku.baidu.com/link?url=W6Mw1f-XN8s ...

  4. windows 快捷键

    Windows 系统 f6  在同一个应用的不同窗口进行切换 ctrl-shift 拖动,创建文件快捷方式 shift 右键点击文件 可以出现复制路径的菜单 WIN键组合键 Windows Key + ...

  5. Jenkins中Jelly基础、超链接、国际化

    Jelly基础 参考:https://wiki.jenkins-ci.org/display/JENKINS/Basic+guide+to+Jelly+usage+in+Jenkins UI Samp ...

  6. window.self ->window.top->window.parent

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  7. python随机服务器的双线出口ip发送邮件

    #-*- coding:utf-8 -*-import smtplibimport sysimport random import socketfrom email.mime.text import ...

  8. 申请UAC权限Manifest文件

    申请UAC 高级权限用, 同时不会影响系统风格 <?xml version="1.0" encoding="UTF-8" standalone=" ...

  9. websocket 403

  10. java调用 webservices接口实现天气预报

    最近要用到web services,而这两天也比较有空,就弄了一个获取天气预报的Util.以前以为这有多难,因为数据来源是个困难.现在用web services的技术,发现下面这个是相当不错的.下面就 ...