程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 從crtmpserver中看具體處理rtmp協議

從crtmpserver中看具體處理rtmp協議

編輯:C++入門知識

在讀到18bytes 同樣的去掉12bytes的頭 [cpp]   bool RTMPProtocolSerializer::Deserialize(Header &header, IOBuffer &buffer,           Variant &message) {       switch (H_MT(header)) {       case RM_HEADER_MESSAGETYPE_USRCTRL:               {                   return DeserializeUsrCtrl(buffer, message[RM_USRCTRL]);       }       }   }     [cpp]  bool RTMPProtocolSerializer::DeserializeUsrCtrl(IOBuffer &buffer, Variant &message) {       ...       switch ((uint16_t) message[RM_USRCTRL_TYPE]) {           ...           case RM_USRCTRL_TYPE_STREAM_SET_BUFFER_LENGTH:           {               AMF_CHECK_BOUNDARIES(buffer, 8);               message[RM_USRCTRL_STREAMID] = ENTOHLP(GETIBPOINTER(buffer)); //----MARKED-LONG---               if (!buffer.Ignore(4)) {                   FATAL("Unable to ignore 4 bytes");                   return false;               }               message[RM_USRCTRL_BUFFLEN] = ENTOHLP(GETIBPOINTER(buffer)); //----MARKED-LONG---               if (!buffer.Ignore(4)) {                   FATAL("Unable to ignore 4 bytes");                   return false;               }               return true;           }              }   }       在InboundMessageAvailable中進行回應   [cpp]   bool BaseRTMPAppProtocolHandler::InboundMessageAvailable(BaseRTMPProtocol *pFrom,           Variant &request) {       ...       switch ((uint8_t) VH_MT(request)) {       case RM_HEADER_MESSAGETYPE_USRCTRL:                   {                       return ProcessUsrCtrl(pFrom, request);       }       }   }       [cpp]   bool BaseRTMPAppProtocolHandler::ProcessUsrCtrl(BaseRTMPProtocol *pFrom,           Variant &request) {       switch ((uint16_t) M_USRCTRL_TYPE(request)) {       case RM_USRCTRL_TYPE_PING_RESPONSE:                   {       這個函數說他啥都沒干= =                       return true;       }       }   }     還是回復了468bytes的數據,但暫時沒清楚     6.直接發送音視頻了   7.好了,博主准備太監了,帶著一大堆朦胧的概念,准備完成一個更小的rtmpserver(寫代碼能力有限,估計這個server不會超過1K行),遇到困難,只能從crtmpserver中抽取代碼了~~~~(>_<)~~~~   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved