peerconnection例子渲染本地视频

调试peerconnection例子,在WebRtcSession::CreateChannels函数中加上断点,呼叫端和被呼叫端创建通道的流程并不一样。呼叫端是从PeerConnection::SetLocalDescription往下执行创建的,而被呼叫端则是收到对端发来的消息后调用PeerConnection::SetRemoteDescription往下执行创建的。根据WebRtcSession::CreateChannels函数创建VoiceChannel和VideoChannel的流程,peerconnection客户端程序首先调用到libjingle_peerconnection工程,以调用ChannelManager::CreateVoiceChannel为例,该函数以worker_thread_->Invoke形式调用ChannelManager::CreateVoiceChannel_w。

libjingle_peerconnection工程中的ChannelManager::CreateVoiceChannel_w函数,该函数首先执行libjingle_media工程中的 >CompositeMediaEngine<cricket::WebRtcVoiceEngine,cricket::WebRtcVideoEngine>::CreateChannel()函数,进而调用同工程的WebRtcVoiceEngine::CreateChannel()最终返回VoiceMediaChannel*,事实上是WebRtcVoiceMediaChannel指针对象,然后ChannelManager::CreateVoiceChannel_w函数调用libjingle_p2p工程中的cricket::VoiceChannel的构造方法,创建VoiceChannel*并最终返回给libjingle_peerconnection工程中的WebRtcSession类的成员变量talk_base::scoped_ptr<cricket::VoiceChannel> voice_channel_;而WebRtcSession则是作为同工程的PeerConnection类的成员变量talk_base::scoped_ptr<WebRtcSession> session_;。PeerConnection类则是peerconnection客户端例子中Conductor类的成员变量talk_base::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_;。

关于libjingle_media工程中的MediaChannel和libjingle_p2p工程中的BaseChannel的关联:关注下ChannelManager::CreateVoiceChannel_w和ChannelManager::CreateVideoChannel_w两个函数,这两个函数中在分别创建继承自BaseChannel类的VoiceChannel*和VideoChannel*时,分别以继承自MediaChannel类的VoiceMediaChannel*和VideoMediaChannel*作为参数。然后分别调用VoiceChannel::Init函数和VideoChannel::Init函数,这两个函数又会调用基类函数BaseChannel::Init,在基类函数中调用media_channel_->SetInterface(this);这样两个类就相互包含了。其中BaseChannel类中为成员变量MediaChannel* media_channel_;而MediaChannel类中为成员变量NetworkInterface* network_interface_;。BaseChannel类继承自NetworkInterface。

调试发现libjingle_media工程中的两个MediaChannel,即VoiceMediaChannel*和VideoMediaChannel*分别是WebRtcVoiceMediaChannel指针对象和WebRtcVideoMediaChannel指针对象。

peerconnection例子本地采集端采集到视频渲染流程:

peerconnection例子本地采集端采集到视频后发送流程:

时间: 2024-10-04 23:42:34

peerconnection例子渲染本地视频的相关文章

peerconnection例子渲染对端视频

渲染对端视频: 渲染:

拍照/相册/录像/本地视频

1.导入系统库 #import <MobileCoreServices/MobileCoreServices.h> 2.遵守协议 <UIImagePickerControllerDelegate,UINavigationControllerDelegate> 3.创建 #pragma mark 相机--拍照 - (void)openCamera{ UIImagePickerController *ipc = [[UIImagePickerController alloc]init]

iOS获取本地视频和网络URL视频的缩略图方法

iOS获取本地视频和网络URL视频的缩略图方法 字数222 阅读612 评论0 喜欢13 首先大家先添加AVFoundation和CoreMedia.framework两个框架 第一种本地视频获取缩略图 NSString *path = @"www.51ios.net/本地路径" MPMoviePlayerController *51iosMPMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileU

使用D3D渲染YUV视频数据

源代码下载 在PC机上,对于YUV格式的视频如YV12,YUY2等的显示方法,一般是采用DIRECTDRAW,使用显卡的OVERLAY表面显示.OVERLAY技术主要是为了解决在PC上播放VCD而在显卡上实现的一个基于硬件的技术.OVERLAY的出现,很好的解决了在PC上播放VCD所遇到的困难.早期PC处理能力有限,播放VCD时,不但要做视频解码工作,还需要做YUV到RGB的颜色空间转换,软件实现非常耗费资源,于是,YUV OVERLAY表面出现了,颜色空间转换被转移到显卡上去实现,显卡做这些工

播放本地视频

1.播放本地视频 PlayLocationVideoInSDActivity.java 关键点1: String path = "/sdcard/TZH.mp4"; //String path2 = ""+Environment.getExternalStorageDirectory()+"/TZH.mp4";//等价上面的地址 关键点2:控制进度条 package com.example.videoplaydemo; import androi

iOS 在应用中播放本地视频文件

可以使用MPMoviePlayerController来播放本地视频文件 1.添加 Mediaplayer framework 并且在viewcontroller中#import <MediaPlayer/MediaPlayer.h> 2. 把视频文件拖拽到xcode中 3. 获取文件存放的路径 NSString*thePath=[[NSBundle mainBundle] pathForResource:@"yourVideo" ofType:@"MOV&quo

手机影音第四天,顶部标题栏的布局实现与本地视频的搜索

前面讲了下面的菜单布局与中间的fragmentLayout的布局与实现,今天就写了顶部title的布局以及去搜索本地sd卡里的视频. 一.顶部布局实现 效果图如下: 1.分析下: a.这个顶部布局是个LinearLayout布局 b.左侧这个321影音是个ImageView,然后这个搜索框是一个TextView,右侧的游戏图标是个相对布局,里面是一个textview和一个Image构成的点,最右侧的那个记录是一个Imageview c.最主要的是中间的这个搜索框,为什么是一个textview呢,

iOS 本地视频和网络视频流播放

需求:最近公司需要做一个楼宇对讲的功能:门口机(连接WIFI)拨号对室内机(对应的WIFI)的设备进行呼叫,室内机收到呼叫之后将对收到的数据进行UDP广播的转发,手机(连接对应的WIFI)收到视频流之后,实时的展示视频数据(手机可以接听,挂断,手机接听之后,室内机不展示视频,只是进行转发.) 简单点说就是手机客户端需要做一个类似于直播平台的软件,可以实时的展示视频,实时的播放接收到的声音数据,并且实时将手机麦克风收到的声音回传给室内机,室内机负责转发给门口机. 之前从来做过视频播放都是本地文件的

Android 跳转系统选择本地视频的功能

今天在项目开发的过程中产品要求添加选择本地视频的功能,于是就翻阅和查找各种资料,进行功能的开发,但是在开发过程中发现,各种不同的品牌的手机跳转至系统选择本地视频的功能结果不太一样,所以我就对一些主流的品牌进行了测试,现做如下总结: 1.选择本地视频的功能 Button click event: Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTEN