文档章节

webrtc onAddStream回调流程

bill_shen
 bill_shen
发布于 2018/12/10 17:02
字数 268
阅读 13
收藏 0

背景

webrtc代码基于M59

正文

1. 回调设置和处理

(1)java层先在监听器中实现回调处理函数,如下所示:

private class PCObserver implements PeerConnection.Observer {
    @Override
    public void onAddStream(final MediaStream stream) {
          if (peerConnection == null || isError) {
            return;
          }

         if (stream.audioTracks.size() > 1 || stream.videoTracks.size() > 1) {
            Log.i(TAG,"leo ------------err onAddStream");
            reportError("Weird-looking stream: " + stream);
            return;
          }

          if (stream.videoTracks.size() == 1) {
            remoteVideoTrack.setEnabled(renderVideo);
            if(remoteRenders != null){
              for (VideoRenderer.Callbacks remoteRender : remoteRenders) {
                remoteVideoTrack.addRenderer(new VideoRenderer(remoteRender));
              }
            }
          }
    }

}

(2)传入监听器,监听器是在createPeerConnection的时候设置的,代码如下:

peerConnection = factory.createPeerConnection(rtcConfig, pcConstraints, pcObserver);

 

2. 回调流程

SetRemoteDescription的时候根据sdp创建new_streams,然后回调,主要流程如下:

PeerConnection::SetRemoteDescription-》创建new_stream (new_streams(StreamCollection::Create()))-》OnAddStream(peerconnection_jni.cc)-》onAddStream(java层回调处理函数)

回调代码如下:

for (size_t i = 0; i < new_streams->count(); ++i) {
    MediaStreamInterface* new_stream = new_streams->at(i);
    stats_->AddStream(new_stream);
    observer_->OnAddStream(
        rtc::scoped_refptr<MediaStreamInterface>(new_stream));
  }

注意:

同个MediaStrem如果先创建了audioTrack,下次相同的stream只添加videoTrack,不会回调回去

© 著作权归作者所有

共有 人打赏支持
上一篇: Track回调流程
bill_shen
粉丝 1
博文 34
码字总数 7724
作品 0
龙岩
程序员
私信 提问
WebRTC基础实践 - 5.通过RTCPeerConnection传输流媒体视频

本节内容 在本节课程中, 我们将学习以下内容: 使用WebRTC兼容库: adapter.js, 来抹平各浏览器间的差异。 通过 RTCPeerConnection API 传输流媒体视频。 控制 media 的捕捉和传输。 本节的完整...

铁锚
2018/11/13
0
0
学习多媒体开发的正确姿势?陈功:看书 啃代码 搞插件

陈功说,要想学好多媒体开发,首先需要兴趣,接下来还需要好的方法。LiveVideoStack邮件采访了声网Agora首席WebRTC架构师,畅聊了自己的成长经历,WebRTC的演进趋势等。陈功表示,WebRTC的未...

vn9plgzvnps1522s82g
2018/04/13
0
0
通过WebRTC实现实时视频通信(一)

通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网...

gbin1
2014/09/23
13.1K
4
Google开源实时通信项目WebRTC

最近,Google正式开源了WebRTC实时通信项目,希望浏览器厂商能够将该技术内建在浏览器中,从而使Web应用开发人员能够通过HTML标签和JavaScript API就实现Web音频、视频通信功能。 WebRTC(W...

墙头草
2011/06/07
0
0
WebRTC入门学习之初识WebRTC

引言: 先声明本人只是小小实习生一枚,若有不正确的,希望大家帮忙指正。 一、WebRTC基本架构 图一 WebRTC总体架构,摘自百度百科 先说说WebRTC大致的实现思路:我们创建的web app,然后在a...

小小实习生
2015/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
32分钟前
1
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
37分钟前
0
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
2
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部