栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

freeswtich 草稿杂

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

freeswtich 草稿杂

一、基本概念
(1)Sofia-sip:FreeSwitch使用了比较成熟的开源的SIP协议栈。
(2)EndPoint:互联协议接口模块。如SIP、H232.
(3)mod_Sofia:实现了SIP中的注册服务器、重定向服务器、媒体服务器等各种功能。他的定位是一个B2BUA,不能实现代理服务器。
(4)SIP profile:在mod_sofia中,SIPprofile相当于SIPUA,通过不同的配置参数配置一个UA的行为.每个SIP profile可以监听不同的IP地址和端口。
(5)GetWay:一个SIPprofile中可以有多个getway,可以直译为网关。用于定义一个远端服务器,使得FreeSwitch可以与其他服务器通信.FreeSwitch可以作为一个SIP客户端向远端服务器注册.
(6)本地SIP用户:FreeSwitch可以作为注册服务器,其他SIP客户端就可以向他注册。FreeSwitch就可以对配置用户目录中的注册信息中的用户进行鉴权。
(7)来话去话不是本地的,双方通话就需要通过中继方式。
从member->session->channel 拿 audio数据,做重采样处理,switch_buffer_write 写入member->audio_buffer, 数据会在conference当前会议线程来mux。

整体结构:

fs:mod_sip-sip, mod_conference.c--conference_video.c 先看构架,分层,module重点文件(freeswitch先知道的mod是控制层,sofia调用协议栈,其他介绍全没用,然后搜code具体函数有用); 看code,最后搜网页。
switch_core_state_machine.c switch_core_session_run
CS_INIT,CS_ROUTING,CS_EXECUTE
conference_video_muxing_write_thread_run  单独线程。
conference_video.c  处理业务逻辑,layout(zoom,x,y,type),配置codec.放入codec,取出放入queue
conference_video_write_frame感觉是放入codec.再哪里??最终感觉调用switch_io_event_hook_video_write_frame_video_write_frame_set?
mod_conference: list conference,conference add ,remove member .会议创建,删除等
发送,接收没找到,应该再mod_conference.
conference 比sip复杂一些。这部分得看书,好像涉及什么call leg, layer,canvas等概念
,,,,,,,,,,,,,,,,
会议就两个文件:conference_video.c:conference_video_muxing_write_thread_run
mod_conference.c //会议创建
conference_new {
                //init,attach,mux
                conference_video_init_canvas(conference, vlayout, &canvas);
                //canvas is member?
                conference_video_attach_canvas(conference, canvas, 0);
                conference_video_launch_muxing_thread(conference, canvas, 0);
                switch_mutex_unlock(conference->canvas_mutex);
                }
业务逻辑:layout,混屏(每个流img根据坐标放入自己的区域),缩放每没看内容。codec 有。
输入是都是通过 switch_core_session_receive_msg (每个janus rtp),输出是每个member 的mux buffer.发给client具体都是调用switch_core
mod_sofia.c 控制init,sofia_read_video_frame,sofia_read_read_frame 读写控制
sofia.c 协议控制中心: invite,info,option....
        //sip_payload 来自协议栈libssofia-si
        r_sdp = sip->sip_payload->pl_data;
libsip(sofia-sip)    协议栈    
,,,,,,,,,,,,,,,,
sofia_msg_thread_run 循环取消息
sofia_queue_message 循环放入消息
,,,,
mod_sofia,sofia.c-------to do
mod_sofia--调用libsip协议栈.信令通了.流媒体就是发relay流,conference合流,janus callback接收
画流程图.
,,,
switch_core_state_machine.c--状态机函数
,,,,,,,,,,,,,,,,,,,,

freeswitch主要是sip server. forward request.voip转发.
mcu只是一个非主要功能输入,业务处理合流or bridge,输出

num_message
switch_rtp_write_frame
janus,manager,freeswitch
mod_sofia模块, conference
mod_sofia.c 是应用层;G:aqy-sourcecodefreeswitch-1.8libssofia-sip 是sip协议栈---soa_static_generate_offer,
sofia.c:static void our_sofia_event_callbackjanus是媒体服务器---freeswitch配置 conference 合流---回到各自的relay 服务器,怎么发给用户呢?
有合流,缩放,layout再mod_video。codec再哪里呢?
conference_video.c

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881742.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号