首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

RTMPdump(libRTMP) 源代码分析 七: 建立一个流媒体连接 (NetStream部分 2)

2013-10-24 
RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)书接上回:RTMPdump 源代码分析 6:

RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)

书接上回:RTMPdump 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)

上回说到,有两个函数尤为重要:

RTMP_ReadPacket()

RTMP_ClientPacket()

而且分析了第一个函数。现在我们再来看看第二个函数吧。第二个函数的主要作用是:处理消息(Message),并做出响应。

先把带注释的代码贴上:

else if (AVMATCH(&methodInvoked, &av_createStream)){//----------------r->dlg->AppendMLInfo(20,0,"命令消息","Result (CreateStream)");//-----------------------------  r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3));  if (r->Link.protocol & RTMP_FEATURE_WRITE)    {      SendPublish(r);    }  else    {      if (r->Link.lFlags & RTMP_LF_PLST)        SendPlaylist(r);  //----------------  r->dlg->AppendCInfo("发送数据。消息 命令 (typeID=20) (Play)。");  //-----------------------------  RTMP_LogPrintf("发送命令消息“play” (typeID=20)\n");      SendPlay(r);      RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS);    }}

由代码可见,程序先获取了stream_id,然后发送了两个消息(Message),分别是SendPlaylist()和SendPlay(),用于获取播放列表,以及开始播放流媒体数据。


热点排行