锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久美女性网,国产精品美女久久久,国产欧美日本一区视频http://m.shnenglu.com/zzh/category/4859.htmlXiao.Zhu C++zh-cnTue, 20 May 2008 01:14:24 GMTTue, 20 May 2008 01:14:24 GMT60linux涓嬪熀浜巎rtplib搴撶殑瀹炴椂浼犻佸疄鐜?http://m.shnenglu.com/zzh/archive/2007/08/08/29578.htmlXiao.ZhuXiao.ZhuWed, 08 Aug 2007 08:39:00 GMThttp://m.shnenglu.com/zzh/archive/2007/08/08/29578.htmlhttp://m.shnenglu.com/zzh/comments/29578.htmlhttp://m.shnenglu.com/zzh/archive/2007/08/08/29578.html#Feedback0http://m.shnenglu.com/zzh/comments/commentRss/29578.htmlhttp://m.shnenglu.com/zzh/services/trackbacks/29578.html涓銆丷TP 鏄繘琛屽疄鏃舵祦濯掍綋浼犺緭鐨勬爣鍑嗗崗璁拰鍏抽敭鎶鏈?br> 瀹炴椂浼犺緭鍗忚錛圧eal-time Transport Protocol錛孭RT錛夋槸鍦?nbsp;Internet 涓婂鐞嗗濯掍綋鏁版嵁嫻佺殑涓縐嶇綉緇滃崗璁紝鍒╃敤瀹冭兘澶熷湪涓瀵逛竴錛坲nicast錛屽崟鎾級鎴栬呬竴瀵瑰錛坢ulticast錛屽鎾級鐨勭綉緇滅幆澧冧腑瀹炵幇浼犳祦濯掍綋鏁版嵁鐨勫疄鏃朵紶杈撱俁TP 閫氬父浣跨敤 UDP 鏉ヨ繘琛屽濯掍綋鏁版嵁鐨勪紶杈擄紝浣嗗鏋滈渶瑕佺殑璇濆彲浠ヤ嬌鐢?nbsp;TCP 鎴栬?nbsp;ATM 絳夊叾瀹冨崗璁?br> 鍗忚鍒嗘瀽 錛氭瘡涓涓猂TP鏁版嵁鎶ラ兘鐢卞ご閮紙Header錛夊拰璐熻澆錛圥ayload錛変袱涓儴鍒嗙粍鎴愶紝鍏朵腑澶撮儴鍓?nbsp;12 涓瓧鑺傜殑鍚箟鏄浐瀹氱殑錛岃岃礋杞藉垯鍙互鏄煶棰戞垨鑰呰棰戞暟鎹?br>
      RTP 鏄洰鍓嶈В鍐蟲祦濯掍綋瀹炴椂浼犺緭闂鐨勬渶濂藉姙娉曪紝瑕佸湪 Linux 騫沖彴涓婅繘琛屽疄鏃朵紶閫佺紪紼嬶紝鍙互鑰冭檻浣跨敤涓浜涘紑鏀炬簮浠g爜鐨?nbsp;RTP 搴擄紝濡?nbsp;LIBRTP銆丣RTPLIB 絳夈侸RTPLIB 鏄竴涓潰鍚戝璞$殑 RTP 搴擄紝瀹冨畬鍏ㄩ伒寰?nbsp;RFC 1889 璁捐錛屽湪寰堝鍦哄悎涓嬫槸涓涓潪甯鎬笉閿欑殑閫夋嫨銆侸RTPLIB 鏄竴涓敤 C++ 璇█瀹炵幇鐨?nbsp;RTP 搴擄紝榪欎釜搴撲嬌鐢╯ocket 鏈哄埗瀹炵幇緗戠粶閫氳 鍥犳鍙互榪愯鍦?nbsp;Windows銆丩inux銆丗reeBSD銆丼olaris銆乁nix鍜孷xWorks 絳夊縐嶆搷浣滅郴緇熶笂銆?br>浜屻丣RTPLIB 搴撶殑浣跨敤鏂規硶鍙婄▼搴忓疄鐜?br> (1)JRTPLIB  鍑芥暟 鐨勪嬌鐢?br> a銆佸湪浣跨敤 JRTPLIB 榪涜瀹炴椂嫻佸獟浣撴暟鎹紶杈撲箣鍓嶏紝棣栧厛搴旇鐢熸垚 RTPSession 綾葷殑涓涓疄渚嬫潵琛ㄧず姝ゆ RTP 浼氳瘽錛岀劧鍚庤皟鐢?nbsp;Create() 鏂規硶鏉ュ鍏惰繘琛屽垵濮嬪寲鎿嶄綔銆俁TPSession 綾葷殑 Create() 鏂規硶鍙湁涓涓弬鏁幫紝鐢ㄦ潵鎸囨槑姝ゆ RTP 浼氳瘽鎵閲囩敤鐨勭鍙e彿銆?br> RTPSession sess;  sess.Create(5000); 

 b銆佽緗伆褰撶殑鏃舵埑鍗曞厓錛屾槸 RTP 浼氳瘽鍒濆鍖栬繃紼嬫墍瑕佽繘琛岀殑鍙﹀涓欏歸噸瑕佸伐浣滐紝榪欐槸閫氳繃璋冪敤 RTPSession 綾葷殑 SetTimestampUnit() 鏂規硶鏉ュ疄鐜扮殑錛岃鏂規硶鍚屾牱涔熷彧鏈変竴涓弬鏁幫紝琛ㄧず鐨勬槸浠ョ涓哄崟鍏冪殑鏃舵埑鍗曞厓銆?br> sess.SetTimestampUnit(1.0/8000.0);

 c銆佸綋 RTP 浼氳瘽鎴愬姛寤虹珛璧鋒潵涔嬪悗錛屾帴涓嬪幓灝卞彲浠ュ紑濮嬭繘琛屾祦濯掍綋鏁版嵁鐨勫疄鏃朵紶杈撲簡銆傞鍏堥渶瑕佽緗ソ鏁版嵁鍙戦佺殑鐩爣鍦板潃錛孯TP 鍗忚鍏佽鍚屼竴浼氳瘽瀛樺湪澶氫釜鐩爣鍦板潃錛岃繖鍙互閫氳繃璋冪敤 RTPSession 綾葷殑 AddDestination()銆丏eleteDestination() 鍜?nbsp;ClearDestinations() 鏂規硶鏉ュ畬鎴愩備緥濡傦紝涓嬮潰鐨勮鍙ヨ〃紺虹殑鏄 RTP 浼氳瘽灝嗘暟鎹彂閫佸埌鏈湴涓繪満鐨?nbsp;6000 绔彛錛?nbsp;

 unsigned long addr = ntohl(inet_addr("127.0.0.1")); 
 sess.AddDestination(addr, 6000);
 
 d銆佺洰鏍囧湴鍧鍏ㄩ儴鎸囧畾涔嬪悗錛屾帴鐫灝卞彲浠ヨ皟鐢?nbsp;RTPSession 綾葷殑 SendPacket() 鏂規硶錛屽悜鎵鏈夌殑鐩爣鍦板潃鍙戦佹祦濯掍綋鏁版嵁銆係endPacket() 鏄?nbsp;RTPSession 綾繪彁渚涚殑涓涓噸杞藉嚱鏁?br>瀵逛簬鍚屼竴涓?nbsp;RTP 浼氳瘽鏉ヨ錛岃礋杞界被鍨嬨佹爣璇嗗拰鏃舵埑澧為噺閫氬父鏉ヨ閮芥槸鐩稿悓鐨勶紝JRTPLIB 鍏佽灝嗗畠浠緗負浼氳瘽鐨勯粯璁ゅ弬鏁幫紝榪欐槸閫氳繃璋冪敤 RTPSession 綾葷殑 SetDefaultPayloadType()銆丼etDefaultMark() 鍜?nbsp;SetDefaultTimeStampIncrement() 鏂規硶鏉ュ畬鎴愮殑銆備負 RTP 浼氳瘽璁劇疆榪欎簺榛樿鍙傛暟鐨勫ソ澶勬槸鍙互綆鍖栨暟鎹殑鍙戦侊紝渚嬪錛屽鏋滀負 RTP 浼氳瘽璁劇疆浜嗛粯璁ゅ弬鏁幫細 

 sess.SetDefaultPayloadType(0);
  sess.SetDefaultMark(false);  
 sess.SetDefaultTimeStampIncrement(10);
 


涔嬪悗鍦ㄨ繘琛屾暟鎹彂閫佹椂鍙渶鎸囨槑瑕佸彂閫佺殑鏁版嵁鍙婂叾闀垮害灝卞彲浠ヤ簡錛?nbsp;

 sess.SendPacket(buffer, 5); 


 e銆佸浜庢祦濯掍綋鏁版嵁鐨勬帴鏀剁錛岄鍏堥渶瑕佽皟鐢?nbsp;RTPSession 綾葷殑 PollData() 鏂規硶鏉ユ帴鏀跺彂閫佽繃鏉ョ殑 RTP 鎴栬?nbsp;RTCP 鏁版嵁鎶ャ傜敱浜庡悓涓涓?nbsp;RTP 浼氳瘽涓厑璁告湁澶氫釜鍙備笌鑰咃紙婧愶級錛屼綘鏃㈠彲浠ラ氳繃璋冪敤 RTPSession 綾葷殑 GotoFirstSource() 鍜?nbsp;GotoNextSource() 鏂規硶鏉ラ亶鍘嗘墍鏈夌殑婧愶紝涔熷彲浠ラ氳繃璋冪敤 RTPSession 綾葷殑 GotoFirstSourceWithData() 鍜?nbsp;GotoNextSourceWithData() 鏂規硶鏉ラ亶鍘嗛偅浜涙惡甯︽湁鏁版嵁鐨勬簮銆傚湪浠?nbsp;RTP 浼氳瘽涓嫻嬪嚭鏈夋晥鐨勬暟鎹簮涔嬪悗錛屾帴涓嬪幓灝卞彲浠ヨ皟鐢?nbsp;RTPSession 綾葷殑 GetNextPacket() 鏂規硶浠庝腑鎶藉彇 RTP 鏁版嵁鎶ワ紝褰撴帴鏀跺埌鐨?nbsp;RTP 鏁版嵁鎶ュ鐞嗗畬涔嬪悗錛屼竴瀹氳璁板緱鍙婃椂閲婃斁銆?br>
JRTPLIB 涓?nbsp;RTP 鏁版嵁鎶ュ畾涔変簡涓夌鎺ユ敹妯″紡錛屽叾涓瘡縐嶆帴鏀舵ā寮忛兘鍏蜂綋瑙勫畾浜嗗摢浜涘埌杈劇殑 RTP 鏁版嵁鎶ュ皢浼氳鎺ュ彈錛岃屽摢浜涘埌杈劇殑 RTP 鏁版嵁鎶ュ皢浼氳鎷掔粷銆傞氳繃璋冪敤 RTPSession 綾葷殑 SetReceiveMode() 鏂規硶鍙互璁劇疆涓嬪垪榪欎簺鎺ユ敹妯″紡錛?nbsp;
? RECEIVEMODE_ALL銆銆緙虹渷鐨勬帴鏀舵ā寮忥紝鎵鏈夊埌杈劇殑 RTP 鏁版嵁鎶ラ兘灝嗚鎺ュ彈錛?nbsp;
? RECEIVEMODE_IGNORESOME銆銆闄や簡鏌愪簺鐗瑰畾鐨勫彂閫佽呬箣澶栵紝鎵鏈夊埌杈劇殑 RTP 鏁版嵁鎶ラ兘灝嗚鎺ュ彈錛岃岃鎷掔粷鐨勫彂閫佽呭垪琛ㄥ彲浠ラ氳繃璋冪敤 AddToIgnoreList()銆丏eleteFromIgnoreList() 鍜?nbsp;ClearIgnoreList() 鏂規硶鏉ヨ繘琛岃緗紱 
? RECEIVEMODE_ACCEPTSOME銆銆闄や簡鏌愪簺鐗瑰畾鐨勫彂閫佽呬箣澶栵紝鎵鏈夊埌杈劇殑 RTP 鏁版嵁鎶ラ兘灝嗚鎷掔粷錛岃岃鎺ュ彈鐨勫彂閫佽呭垪琛ㄥ彲浠ラ氳繃璋冪敤 AddToAcceptList ()銆丏eleteFromAcceptList 鍜?nbsp;ClearAcceptList () 鏂規硶鏉ヨ繘琛岃緗?nbsp;涓嬮潰鏄噰鐢ㄧ涓夌鎺ユ敹妯″紡鐨勭▼搴忕ず渚嬨?br> if (sess.GotoFirstSourceWithData()) {   
  do {   
   sess.AddToAcceptList(remoteIP, allports,portbase);
          sess.SetReceiveMode(RECEIVEMODE_ACCEPTSOME);
 
    RTPPacket *pack;         
    pack = sess.GetNextPacket();            // 澶勭悊鎺ユ敹鍒扮殑鏁版嵁    
    delete pack;   } 
  while (sess.GotoNextSourceWithData()); 
  }


  錛?錛夌▼搴忔祦紼嬪浘
鍙戦侊細鑾峰緱鎺ユ敹绔殑 IP 鍦板潃鍜岀鍙e彿        鍒涘緩 RTP 浼氳瘽        鎸囧畾 RTP 鏁版嵁鎺ユ敹绔?nbsp;璁劇疆 RTP 浼氳瘽榛樿鍙傛暟   鍙戦佹祦濯掍綋鏁版嵁
鎺ユ敹錛氳幏寰楃敤鎴鋒寚瀹氱殑绔彛鍙?nbsp; 鍒涘緩RTP浼氳瘽  璁劇疆鎺ユ敹妯″紡  鎺ュ彈RTP鏁版嵁  媯绱TP鏁版嵁婧?nbsp; 鑾峰彇RTP鏁版嵁鎶?nbsp; 鍒犻櫎RTP鏁版嵁鎶?br>

涓夈佺幆澧冩惌寤哄強緙栬瘧鏂規硶
錛?錛塗oolchain鐨勫畨瑁?br> 棣栧厛鎵懼埌xscale-arm-toolchain.tgz鏂囦歡錛屽亣璁捐鏂囦歡鍖呮斁鍦?tmp/涓?br> #cd /
 #tar -zxvf /tmp/xscale-arm-toolchain.tgz
 鍐嶈緗幆澧冨彉閲?br> #export PATH=/usr/local/arm-linux/bin:$PATH
 鏈鍚庢鏌ヤ竴涓嬩氦鍙夌紪璇戝伐鍏鋒槸鍚﹀畨瑁呮垚鍔?br> #arm-linux-g++ --version
 鐪嬫槸鍚︽樉紺篴rm-linux-g++鐨勭増鏈紝濡傛湁鍒欏畨瑁呮垚鍔熴?br>錛?錛塉RTPLIB 搴撶殑浜ゅ弶緙栬瘧鍙婂畨瑁?br> 棣栧厛浠?nbsp;JRTPLIB 鐨勭綉绔欙紙http://lumumba.luc.ac.be/jori/jrtplib/jrtplib.htmll錛?nbsp;涓嬭澆鏈鏂扮殑婧愮爜鍖咃紝姝ゅ浣跨敤鐨勬槸jrtplib-2.8.tar錛屽亣璁句笅杞藉悗鐨勬簮鐮佸寘鏀懼湪/tmp涓嬶紝鎵?nbsp;琛屼笅闈㈢殑鍛戒護瀵瑰叾瑙e帇緙╋細
 #cd /tmp
 #tar -zxvf jrtplib-2.8.tar
 鐒跺悗瑕佸jrtplib榪涜閰嶇疆鍜岀紪璇?br> #cd jrtplib-2.8
 #./configure CC=arm-linux-g++ cross-compile=yes
 淇敼Makefile鏂囦歡
 灝嗛摼鎺ュ懡浠d 鍜宎r鏀逛負arm-linux-ld鍜?nbsp;arm-linux-ar
 #make
 鏈鍚庡啀鎵ц濡備笅鍛戒護灝卞彲浠ュ畬鎴?nbsp;JRTPLIB 鐨勫畨瑁咃細
 #make install
(3)紼嬪簭緙栬瘧
 a銆侀厤緗紪璇戠幆澧?br> 鍙互鐢╡xport鏉ラ厤緗紝涔熷彲浠ョ敤緙栧啓Makefile鐨勬柟娉曘傝繖閲岄噰鐢∕akefile銆?br> 緙栧啓Makefile&:
INCL = -I/usr/local/include
CFLAGS = -pipe -O2 -fno-strength-reduce
LFLAGS = /usr/local/lib/libjrtp.a -L/usr/X11R6/lib
LIBS = -LX11 -LXext /usr/local/lib/libjrtp.a
CC = arm-linux-g++

main:main.o
 $(CC) $(LFLAGS) $(INCL) -o main main.o $(LIBS)
main.o:main.cpp

clean:
 rm -f main
 rm -f *.o
 
.SUFFIXES:.cpp
.cpp.o:
 $(CC) -c $(CFLAGS) $(INCL) -o $@ $<         /*  $@琛ㄧず鐩爣鐨勫畬鏁村悕瀛?nbsp;     */
          /* $<琛ㄧず絎竴涓緷璧栨枃浠剁殑鍚嶅瓧 */
 b銆佺紪璇?br> 鍋囪鍙戦佸拰鎺ユ敹紼嬪簭鍒嗗埆鏀懼湪/tmp/send鍜?tmp/receive鐩綍涓?br> #cd /tmp/send
 #make
 #cd /tmp/receive
 #make

鍥涖佹槗鍑洪敊璇強娉ㄦ剰闂
 1銆佹壘涓嶅埌涓浜涙爣鍑嗙殑鏈 鍩烘湰鐨勪竴浜涘ご鏂囦歡銆?br>  涓昏鏄洜涓篢oolchain璺緞娌″畨瑁呭錛岃 涓ユ牸鎸夌収姝ラ瀹夎銆?br> 2銆佹壘涓嶅埌浣跨敤鐨刯rtplib搴撲腑鐨勪竴浜涘ご鏂囦歡銆?br>  鍦?nbsp;jrtplib鐨勫畨瑁呯洰褰曚笅錛宨nclude璺緞涓嬩笉鑳藉啀鏈夊埆鐨勭洰褰曘?br> 3銆乺ecieve鍑芥暟鎺ユ敹鏁版嵁鍖呬笉鑳芥紜彁鍑烘墍瑕佹暟鎹?br>  鐢變簬姣忎竴涓猂TP鏁版嵁鎶ラ兘鐢卞ご閮紙Header錛夊拰璐熻澆錛圥ayload錛変袱涓儴鍒嗙粍鎴愶紝鑻ヤ嬌鐢╣etrawdata()鏄繑鍥炴暣涓暟鎹寘鐨勬暟鎹紝鍖呭惈浼犺緭濯掍綋鐨勭被鍨嬨佹牸寮忋佸簭鍒楀彿銆佹椂闂存埑浠ュ強鏄惁鏈夐檮鍔犳暟鎹瓑淇℃伅銆俫etpayload()鍑芥暟鏄繑鍥炴墍鍙戦佺殑鏁版嵁銆備袱鑰呬竴瀹氳鍒嗘竻銆?br> 4銆佽緗甊ECEIVEMODE_ACCEPTSOME銆銆鎺ユ敹妯″紡鍚庯紝榪愯紼嬪簭鎺ユ敹绔笉鑳芥帴鍖呫?br>  IP鍦板潃鏍煎紡鍑轟簡闂銆俰ner_addr()涓巒tohl()鍑芥暟瑕佺敤瀵癸紝鍚﹀垯鍙傛暟浼犱笉榪涘幓錛屾帴鍙楀垪琛ㄤ腑鏃犲鹼紝褰撶劧鎺ユ敹涓嶄簡鏁版嵁鍖呫?br> 5銆佺紪璇戦氳繃錛屼絾嫻嬭瘯鏃舵帴鏀剁涓嶈兘鎺ユ敹鍒版暟鎹?br>  鍙兘鏄帴鏀舵満闃茬伀澧欐湭鍏抽棴銆傝繍琛岋細
  #iptables -F
  涔熷彲鑳芥槸IP鍦板潃娌℃湁璁劇疆濂姐傝繍琛岋細
  #ifocnfig eth0  *.*.*.*  netmask *.*.*.*
 6銆佷嬌鐢╦rtolib搴撴椂錛屽湪紼嬪簭涓璱nclude 鍚庢渶濂藉姞涓婂簱鎵鍦ㄧ殑璺緞銆?br>浜斻佺▼搴?br>
send:

#include <stdio.h>
#include <string.h>
#include "rtpsession.h"

// 閿欒澶勭悊鍑芥暟
void checkerror(int err)
{
  if (err < 0) {
    char* errstr = RTPGetErrorString(err);
    printf("Error:%s\\n", errstr);
    exit(-1);
  }
}

int main(int argc, char** argv)
{
  RTPSession sess;
  unsigned long destip;
  int destport;
  int portbase = 6000;
  int status, index;
  char buffer[128];

  if (argc != 3) {
    printf("Usage: ./sender destip destport\\n");
    return -1;
  }

  // 鑾峰緱鎺ユ敹绔殑IP鍦板潃鍜岀鍙e彿
  destip = inet_addr(argv[1]);
  if (destip == INADDR_NONE) {
    printf("Bad IP address specified.\\n");
    return -1;
  }
  destip = ntohl(destip);
  destport = atoi(argv[2]);

  // 鍒涘緩RTP浼氳瘽
  status = sess.Create(portbase);
  checkerror(status);

  // 鎸囧畾RTP鏁版嵁鎺ユ敹绔?br>  status = sess.AddDestination(destip, destport);
  checkerror(status);

  // 璁劇疆RTP浼氳瘽榛樿鍙傛暟
  sess.SetDefaultPayloadType(0);
  sess.SetDefaultMark(false);
  sess.SetDefaultTimeStampIncrement(10);

  // 鍙戦佹祦濯掍綋鏁版嵁
  index = 1;
  do {
    sprintf(buffer, "%d: RTP packet", index ++);
    sess.SendPacket(buffer, strlen(buffer));
    printf("Send packet !\\n");
  } while(1);

  return 0;
}






receive:

#include <stdio.h>
#include "rtpsession.h"
#include "rtppacket.h"

// 閿欒澶勭悊鍑芥暟
void checkerror(int err)
{
  if (err < 0) {
    char* errstr = RTPGetErrorString(err);
    printf("Error:%s\\n", errstr);
    exit(-1);
  }
}

int main(int argc, char** argv)
{
  RTPSession sess;
  int localport,portbase;
  int status;
  unsigned long remoteIP;
  if (argc != 4) {
    printf("Usage: ./sender localport\\n");
    return -1;
  }

   // 鑾峰緱鐢ㄦ埛鎸囧畾鐨勭鍙e彿
   
  remoteIP = inet_addr(argv[1]);
  localport = atoi(argv[2]);
  portbase = atoi(argv[3]);
  // 鍒涘緩RTP浼氳瘽
  status = sess.Create(localport);
  checkerror(status);
  
  //RTPHeader *rtphdr;
  unsigned long timestamp1;
  unsigned char * RawData;
  unsigned char temp[30];
  int lengh ,i;
  bool allports = 1;
  
  sess.AddToAcceptList(remoteIP, allports,portbase);
  
     do {
 //璁劇疆鎺ユ敹妯″紡
        sess.SetReceiveMode(RECEIVEMODE_ACCEPTSOME);
   sess.AddToAcceptList(remoteIP, allports,portbase);

    // 鎺ュ彈RTP鏁版嵁
    status = sess.PollData();

    
 // 媯绱TP鏁版嵁婧?br>    if (sess.GotoFirstSourceWithData()) {
      do {
        
        RTPPacket* packet;
        // 鑾峰彇RTP鏁版嵁鎶?br>        while ((packet = sess.GetNextPacket()) != NULL) {
          printf("Got packet !\n");

   timestamp1 = packet->GetTimeStamp();
   lengh=packet->GetPayloadLength();
   RawData=packet->GetPayload();
   
   for(i=0;i<lengh;i++){
      temp[i]=RawData[i];
  printf("%c",temp[i]);
   }
   temp[i]='\0';
   printf("  timestamp: %d lengh=%d data:%s\n",timestamp1,lengh,&temp);
          // 鍒犻櫎RTP鏁版嵁鎶?br>   
          delete packet;
        }
      } while (sess.GotoNextSourceWithData());
    }
  } while(1);

  return 0;
}



Xiao.Zhu 2007-08-08 16:39 鍙戣〃璇勮
]]>
RTPhttp://m.shnenglu.com/zzh/archive/2007/08/08/29577.htmlXiao.ZhuXiao.ZhuWed, 08 Aug 2007 08:38:00 GMThttp://m.shnenglu.com/zzh/archive/2007/08/08/29577.htmlhttp://m.shnenglu.com/zzh/comments/29577.htmlhttp://m.shnenglu.com/zzh/archive/2007/08/08/29577.html#Feedback0http://m.shnenglu.com/zzh/comments/commentRss/29577.htmlhttp://m.shnenglu.com/zzh/services/trackbacks/29577.html嫻佸獟浣撴寚鐨勬槸鍦ㄧ綉緇滀腑浣跨敤嫻佹妧鏈紶杈撶殑榪炵畫鏃跺熀濯掍綋錛屽叾鐗圭偣鏄湪鎾斁鍓嶄笉闇瑕佷笅杞芥暣涓枃浠訛紝鑰屾槸閲囩敤杈逛笅杞借竟鎾斁鐨勬柟寮忥紝瀹冩槸瑙嗛浼氳銆?span>IP鐢佃瘽絳夊簲鐢ㄥ満鍚堢殑鎶鏈熀紜銆?span>RTP鏄繘琛屽疄鏃舵祦濯掍綋浼犺緭鐨勬爣鍑嗗崗璁拰鍏抽敭鎶鏈紝鏈枃浠嬬粛濡備綍鍦?span>Linux涓嬪埄鐢?span>JRTPLIB榪涜瀹炴椂嫻佸獟浣撶紪紼嬨?nbsp;

  

涓銆佹祦濯掍綋綆浠?/span>
        
闅忕潃Internet鐨勬棩鐩婃櫘鍙婏紝鍦ㄧ綉緇滀笂浼犺緭鐨勬暟鎹凡緇忎笉鍐嶅眬闄愪簬鏂囧瓧鍜屽浘褰紝鑰屾槸閫愭笎鍚戝0闊沖拰瑙嗛絳夊濯掍綋鏍煎紡榪囨浮銆傜洰鍓嶅湪緗戠粶涓婁紶杈撻煶棰?span>/瑙嗛錛?span>Audio/Video錛岀畝縐?span>A/V錛夌瓑澶氬獟浣撴枃浠舵椂錛屽熀鏈笂鍙湁涓嬭澆鍜屾祦寮忎紶杈撲袱縐嶉夋嫨銆傞氬父璇存潵錛?span>A/V鏂囦歡鍗犳嵁鐨勫瓨鍌ㄧ┖闂撮兘姣旇緝澶э紝鍦ㄥ甫瀹藉彈闄愮殑緗戠粶鐜涓笅杞藉彲鑳借鑰楄垂鏁板垎閽熺敋鑷蟲暟灝忔椂錛屾墍浠ヨ繖縐嶅鐞嗘柟娉曠殑寤惰繜寰堝ぇ銆傚鏋滄崲鐢ㄦ祦寮忎紶杈撶殑璇濓紝澹伴煶銆佸獎鍍忋佸姩鐢葷瓑澶氬獟浣撴枃浠跺皢鐢變笓闂ㄧ殑嫻佸獟浣撴湇鍔″櫒璐熻矗鍚戠敤鎴瘋繛緇佸疄鏃跺湴鍙戦侊紝榪欐牱鐢ㄦ埛鍙互涓嶅繀絳夊埌鏁翠釜鏂囦歡鍏ㄩ儴涓嬭澆瀹屾瘯錛岃屽彧闇瑕佺粡榪囧嚑縐掗挓鐨勫惎鍔ㄥ歡鏃跺氨鍙互浜嗭紝褰撹繖浜涘濯掍綋鏁版嵁鍦ㄥ鎴鋒満涓婃挱鏀炬椂錛屾枃浠剁殑鍓╀綑閮ㄥ垎灝嗙戶緇粠嫻佸獟浣撴湇鍔″櫒涓嬭澆銆?/span>

 

        嫻侊紙Streaming錛夋槸榪戝勾鍦?span>Internet涓婂嚭鐜扮殑鏂版蹇碉紝鍏跺畾涔夐潪甯稿箍娉涳紝涓昏鏄寚閫氳繃緗戠粶浼犺緭澶氬獟浣撴暟鎹殑鎶鏈葷О銆傛祦濯掍綋鍖呭惈騫夸箟鍜岀嫮涔変袱縐嶅唴娑碉細騫夸箟涓婄殑嫻佸獟浣撴寚鐨勬槸浣塊煶棰戝拰瑙嗛褰㈡垚紼沖畾鍜岃繛緇殑浼犺緭嫻佸拰鍥炴斁嫻佺殑涓緋誨垪鎶鏈佹柟娉曞拰鍗忚鐨勬葷О錛屽嵆嫻佸獟浣撴妧鏈紱鐙箟涓婄殑嫻佸獟浣撴槸鐩稿浜庝紶緇熺殑涓嬭澆-鍥炴斁鏂瑰紡鑰岃█鐨勶紝鎸囩殑鏄竴縐嶄粠Internet涓婅幏鍙栭煶棰戝拰瑙嗛絳夊濯掍綋鏁版嵁鐨勬柊鏂規硶錛屽畠鑳藉鏀寔澶氬獟浣撴暟鎹祦鐨勫疄鏃朵紶杈撳拰瀹炴椂鎾斁銆傞氳繃榪愮敤嫻佸獟浣撴妧鏈紝鏈嶅姟鍣ㄨ兘澶熷悜瀹㈡埛鏈哄彂閫佺ǔ瀹氬拰榪炵畫鐨勫濯掍綋鏁版嵁嫻侊紝瀹㈡埛鏈哄湪鎺ユ敹鏁版嵁鐨勫悓鏃朵互涓涓ǔ瀹氱殑閫熺巼鍥炴斁錛岃屼笉鐢ㄧ瓑鏁版嵁鍏ㄩ儴涓嬭澆瀹屼箣鍚庡啀榪涜鍥炴斁銆?/span>

 

鐢變簬鍙楃綉緇滃甫瀹姐佽綆楁満澶勭悊鑳藉姏鍜屽崗璁鑼冪瓑鏂歸潰鐨勯檺鍒訛紝瑕佹兂浠?span>Internet涓婁笅杞藉ぇ閲忕殑闊抽鍜岃棰戞暟鎹紝鏃犺浠庝笅杞芥椂闂村拰瀛樺偍絀洪棿涓婃潵璁查兘鏄笉澶幇瀹炵殑錛岃屾祦濯掍綋鎶鏈殑鍑虹幇鍒欏緢濂藉湴瑙e喅浜嗚繖涓闅鵑銆傜洰鍓嶅疄鐜版祦濯掍綋浼犺緭涓昏鏈変袱縐嶆柟娉曪細欏哄簭嫻侊紙progressive streaming錛変紶杈撳拰瀹炴椂嫻侊紙realtime streaming錛変紶杈擄紝瀹冧滑鍒嗗埆閫傚悎浜庝笉鍚岀殑搴旂敤鍦哄悎銆?/span>

 

欏哄簭嫻佷紶杈?/span>

 

        欏哄簭嫻佷紶杈撻噰鐢ㄩ『搴忎笅杞界殑鏂瑰紡榪涜浼犺緭錛屽湪涓嬭澆鐨勫悓鏃剁敤鎴峰彲浠ュ湪綰垮洖鏀懼濯掍綋鏁版嵁錛屼絾緇欏畾鏃跺埢鍙兘瑙傜湅宸茬粡涓嬭澆鐨勯儴鍒嗭紝涓嶈兘璺沖埌灝氭湭涓嬭澆鐨勯儴鍒嗭紝涔熶笉鑳藉湪浼犺緭鏈熼棿鏍規嵁緗戠粶鐘跺喌瀵逛笅杞介熷害榪涜璋冩暣銆傜敱浜庢爣鍑嗙殑HTTP鏈嶅姟鍣ㄥ氨鍙互鍙戦佽繖縐嶅艦寮忕殑嫻佸獟浣擄紝鑰屼笉闇瑕佸叾浠栫壒孌婂崗璁殑鏀寔錛屽洜姝や篃甯稿父琚О浣?span>HTTP 嫻佸紡浼犺緭銆傞『搴忔祦寮忎紶杈撴瘮杈冮傚悎浜庨珮璐ㄩ噺鐨勫濯掍綋鐗囨錛屽鐗囧ご銆佺墖灝炬垨鑰呭箍鍛婄瓑銆?/span>

 

瀹炴椂嫻佷紶杈?/span>

 

        瀹炴椂嫻佸紡浼犺緭淇濊瘉濯掍綋淇″彿甯﹀鑳藉涓庡綋鍓嶇綉緇滅姸鍐電浉鍖歸厤錛屼粠鑰屼嬌寰楁祦濯掍綋鏁版嵁鎬繪槸琚疄鏃跺湴浼犻侊紝鍥犳鐗瑰埆閫傚悎浜庣幇鍦轟簨浠躲傚疄鏃舵祦浼犺緭鏀寔闅忔満璁塊棶錛屽嵆鐢ㄦ埛鍙互閫氳繃蹇繘鎴栬呭悗閫鎿嶄綔鏉ヨ鐪嬪墠闈㈡垨鑰呭悗闈㈢殑鍐呭銆備粠鐞嗚涓婅錛屽疄鏃舵祦濯掍綋涓緇忔挱鏀懼氨涓嶄細鍋滈】錛屼絾浜嬪疄涓婁粛鏈夊彲鑳藉彂鐢熷懆鏈熸х殑鏆傚仠鐜拌薄錛屽挨鍏舵槸鍦ㄧ綉緇滅姸鍐墊伓鍖栨椂鏇存槸濡傛銆備笌欏哄簭嫻佷紶杈撲笉鍚岀殑鏄紝瀹炴椂嫻佷紶杈撻渶瑕佺敤鍒扮壒瀹氱殑嫻佸獟浣撴湇鍔″櫒錛岃屼笖榪橀渶瑕佺壒瀹氱綉緇滃崗璁殑鏀寔銆?/span>

 

浜屻佹祦濯掍綋鍗忚
瀹炴椂浼犺緭鍗忚錛?span>Real-time Transport Protocol錛?span>PRT錛夋槸鍦?span>Internet涓婂鐞嗗濯掍綋鏁版嵁嫻佺殑涓縐嶇綉緇滃崗璁紝鍒╃敤瀹冭兘澶熷湪涓瀵逛竴錛?span>unicast錛屽崟鎾級鎴栬呬竴瀵瑰錛?span>multicast錛屽鎾級鐨勭綉緇滅幆澧冧腑瀹炵幇浼犳祦濯掍綋鏁版嵁鐨勫疄鏃朵紶杈撱?span>RTP閫氬父浣跨敤UDP鏉ヨ繘琛屽濯掍綋鏁版嵁鐨勪紶杈擄紝浣嗗鏋滈渶瑕佺殑璇濆彲浠ヤ嬌鐢?span>TCP鎴栬?span> ATM絳夊叾瀹冨崗璁紝鏁翠釜RTP鍗忚鐢變袱涓瘑鍒囩浉鍏崇殑閮ㄥ垎緇勬垚錛?span>RTP鏁版嵁鍗忚鍜?span>RTP鎺у埗鍗忚銆傚疄鏃舵祦鍗忚錛?span>Real Time Streaming Protocol錛?span>RTSP錛夋渶鏃╃敱Real Networks鍜?span>Netscape鍏徃鍏卞悓鎻愬嚭錛屽畠浣嶄簬RTP鍜?span>RTCP涔嬩笂錛屽叾鐩殑鏄笇鏈涢氳繃IP緗戠粶鏈夋晥鍦頒紶杈撳濯掍綋鏁版嵁銆?/span>

 

2.1 RTP鏁版嵁鍗忚

 

RTP鏁版嵁鍗忚璐熻矗瀵規祦濯掍綋鏁版嵁榪涜灝佸寘騫跺疄鐜板獟浣撴祦鐨勫疄鏃朵紶杈擄紝姣忎竴涓?span>RTP鏁版嵁鎶ラ兘鐢卞ご閮紙Header錛夊拰璐熻澆錛?span>Payload錛変袱涓儴鍒嗙粍鎴愶紝鍏朵腑澶撮儴鍓?span>12涓瓧鑺傜殑鍚箟鏄浐瀹氱殑錛岃岃礋杞藉垯鍙互鏄煶棰戞垨鑰呰棰戞暟鎹?span>RTP鏁版嵁鎶ョ殑澶撮儴鏍煎紡濡傚浘1鎵紺猴細

 

 
鍥?span>1 RTP澶撮儴鏍煎紡

 

鍏朵腑姣旇緝閲嶈鐨勫嚑涓煙鍙婂叾鎰忎箟濡備笅錛?nbsp;

 

  • CSRC璁版暟錛?span>CC錛?/span>銆銆琛ㄧずCSRC鏍囪瘑鐨勬暟鐩?span>CSRC鏍囪瘑绱ц窡鍦?span>RTP鍥哄畾澶撮儴涔嬪悗錛岀敤鏉ヨ〃紺?span>RTP鏁版嵁鎶ョ殑鏉ユ簮錛?span>RTP鍗忚鍏佽鍦ㄥ悓涓涓細璇濅腑瀛樺湪澶氫釜鏁版嵁婧愶紝瀹冧滑鍙互閫氳繃RTP娣峰悎鍣ㄥ悎騫朵負涓涓暟鎹簮銆備緥濡傦紝鍙互浜х敓涓涓?span>CSRC鍒楄〃鏉ヨ〃紺轟竴涓數璇濅細璁紝璇ヤ細璁氳繃涓涓?span> RTP娣峰悎鍣ㄥ皢鎵鏈夎璇濊呯殑璇煶鏁版嵁緇勫悎涓轟竴涓?span>RTP鏁版嵁婧愩?nbsp;
  • 璐熻澆綾誨瀷錛?span>PT錛?/span>銆銆鏍囨槑RTP璐熻澆鐨勬牸寮忥紝鍖呮嫭鎵閲囩敤鐨勭紪鐮佺畻娉曘侀噰鏍烽鐜囥佹壙杞介氶亾絳夈備緥濡傦紝綾誨瀷2琛ㄦ槑璇?span>RTP鏁版嵁鍖呬腑鎵胯澆鐨勬槸鐢?span>ITU G.721綆楁硶緙栫爜鐨勮闊蟲暟鎹紝閲囨牱棰戠巼涓?span>8000Hz錛屽茍涓旈噰鐢ㄥ崟澹伴亾銆?nbsp;
  • 搴忓垪鍙?/span>銆銆鐢ㄦ潵涓烘帴鏀舵柟鎻愪緵鎺㈡祴鏁版嵁涓㈠け鐨勬柟娉曪紝浣嗗浣曞鐞嗕涪澶辯殑鏁版嵁鍒欐槸搴旂敤紼嬪簭鑷繁鐨勪簨鎯咃紝RTP鍗忚鏈韓騫朵笉璐熻矗鏁版嵁鐨勯噸浼犮?nbsp;
  • 鏃墮棿鎴?/span>銆銆璁板綍浜嗚礋杞戒腑絎竴涓瓧鑺傜殑閲囨牱鏃墮棿錛屾帴鏀舵柟鑳藉鏃墮棿鎴寵兘澶熺‘瀹氭暟鎹殑鍒拌揪鏄惁鍙楀埌浜嗗歡榪熸姈鍔ㄧ殑褰卞搷錛屼絾鍏蜂綋濡備綍鏉ヨˉ鍋垮歡榪熸姈鍔ㄥ垯鏄簲鐢ㄧ▼搴忚嚜宸辯殑浜嬫儏銆?nbsp;

浠?span>RTP 鏁版嵁鎶ョ殑鏍煎紡涓嶉毦鐪嬪嚭錛屽畠鍖呭惈浜嗕紶杈撳獟浣撶殑綾誨瀷銆佹牸寮忋佸簭鍒楀彿銆佹椂闂存埑浠ュ強鏄惁鏈夐檮鍔犳暟鎹瓑淇℃伅錛岃繖浜涢兘涓哄疄鏃剁殑嫻佸獟浣撲紶杈撴彁渚涗簡鐩稿簲鐨勫熀紜銆?span>RTP鍗忚鐨勭洰鐨勬槸鎻愪緵瀹炴椂鏁版嵁錛堝浜や簰寮忕殑闊抽鍜岃棰戯級鐨勭鍒扮浼犺緭鏈嶅姟錛屽洜姝ゅ湪RTP涓病鏈夎繛鎺ョ殑姒傚康錛屽畠鍙互寤虹珛鍦ㄥ簳灞傜殑闈㈠悜榪炴帴鎴栭潰鍚戦潪榪炴帴鐨勪紶杈撳崗璁箣涓婏紱RTP涔熶笉渚濊禆浜庣壒鍒殑緗戠粶鍦板潃鏍煎紡錛岃屼粎浠呭彧闇瑕佸簳灞備紶杈撳崗璁敮鎸佺粍甯э紙Framing錛夊拰鍒嗘錛?span>Segmentation錛夊氨瓚沖浜嗭紱鍙﹀RTP 鏈韓榪樹笉鎻愪緵浠諱綍鍙潬鎬ф満鍒訛紝榪欎簺閮借鐢變紶杈撳崗璁垨鑰呭簲鐢ㄧ▼搴忚嚜宸辨潵淇濊瘉銆傚湪鍏稿瀷鐨勫簲鐢ㄥ満鍚堜笅錛?span>RTP 涓鑸槸鍦ㄤ紶杈撳崗璁箣涓婁綔涓哄簲鐢ㄧ▼搴忕殑涓閮ㄥ垎鍔犱互瀹炵幇鐨勶紝濡傚浘2鎵紺猴細

 


鍥?span>2 RTP涓庡悇縐嶇綉緇滃崗璁殑鍏崇郴

 

2.2 RTCP鎺у埗鍗忚

 

RTCP 鎺у埗鍗忚闇瑕佷笌RTP鏁版嵁鍗忚涓璧烽厤鍚堜嬌鐢紝褰撳簲鐢ㄧ▼搴忓惎鍔ㄤ竴涓?span>RTP浼氳瘽鏃跺皢鍚屾椂鍗犵敤涓や釜绔彛錛屽垎鍒緵RTP 鍜?span>RTCP浣跨敤銆?span>RTP鏈韓騫朵笉鑳戒負鎸夊簭浼犺緭鏁版嵁鍖呮彁渚涘彲闈犵殑淇濊瘉錛屼篃涓嶆彁渚涙祦閲忔帶鍒跺拰鎷ュ鎺у埗錛岃繖浜涢兘鐢?span>RTCP鏉ヨ礋璐e畬鎴愩傞氬父RTCP浼氶噰鐢ㄤ笌 RTP鐩稿悓鐨勫垎鍙戞満鍒訛紝鍚戜細璇濅腑鐨勬墍鏈夋垚鍛樺懆鏈熸у湴鍙戦佹帶鍒朵俊鎭紝搴旂敤紼嬪簭閫氳繃鎺ユ敹榪欎簺鏁版嵁錛屼粠涓幏鍙栦細璇濆弬涓庤呯殑鐩稿叧璧勬枡錛屼互鍙婄綉緇滅姸鍐點佸垎緇勪涪澶辨鐜囩瓑鍙嶉淇℃伅錛屼粠鑰岃兘澶熷鏈嶅姟璐ㄩ噺榪涜鎺у埗鎴栬呭緗戠粶鐘跺喌榪涜璇婃柇銆?/span>

 

RTCP鍗忚鐨勫姛鑳芥槸閫氳繃涓嶅悓鐨?span>RTCP鏁版嵁鎶ユ潵瀹炵幇鐨勶紝涓昏鏈夊涓嬪嚑縐嶇被鍨嬶細 

 

  • SR銆銆鍙戦佺鎶ュ憡錛屾墍璋撳彂閫佺鏄寚鍙戝嚭RTP鏁版嵁鎶ョ殑搴旂敤紼嬪簭鎴栬呯粓绔紝鍙戦佺鍚屾椂涔熷彲浠ユ槸鎺ユ敹绔?nbsp;
  • RR銆銆鎺ユ敹绔姤鍛婏紝鎵璋撴帴鏀剁鏄寚浠呮帴鏀朵絾涓嶅彂閫?span>RTP鏁版嵁鎶ョ殑搴旂敤紼嬪簭鎴栬呯粓绔?nbsp;
  • SDES銆銆婧愭弿榪幫紝涓昏鍔熻兘鏄綔涓轟細璇濇垚鍛樻湁鍏蟲爣璇嗕俊鎭殑杞戒綋錛屽鐢ㄦ埛鍚嶃侀偖浠跺湴鍧銆佺數璇濆彿鐮佺瓑錛屾澶栬繕鍏鋒湁鍚戜細璇濇垚鍛樹紶杈句細璇濇帶鍒朵俊鎭殑鍔熻兘銆?nbsp;
  • BYE銆銆閫氱煡紱誨紑錛屼富瑕佸姛鑳芥槸鎸囩ず鏌愪竴涓垨鑰呭嚑涓簮涓嶅啀鏈夋晥錛屽嵆閫氱煡浼氳瘽涓殑鍏朵粬鎴愬憳鑷繁灝嗛鍑轟細璇濄?nbsp;
  • APP銆銆鐢卞簲鐢ㄧ▼搴忚嚜宸卞畾涔夛紝瑙e喅浜?span>RTCP鐨勬墿灞曟ч棶棰橈紝騫朵笖涓哄崗璁殑瀹炵幇鑰呮彁渚涗簡寰堝ぇ鐨勭伒媧繪с?nbsp;

RTCP鏁版嵁鎶ユ惡甯︽湁鏈嶅姟璐ㄩ噺鐩戞帶鐨勫繀瑕佷俊鎭紝鑳藉瀵規湇鍔¤川閲忚繘琛屽姩鎬佺殑璋冩暣錛屽茍鑳藉瀵圭綉緇滄嫢濉炶繘琛屾湁鏁堢殑鎺у埗銆傜敱浜?span>RTCP鏁版嵁鎶ラ噰鐢ㄧ殑鏄鎾柟寮忥紝鍥犳浼氳瘽涓殑鎵鏈夋垚鍛橀兘鍙互閫氳繃RTCP鏁版嵁鎶ヨ繑鍥炵殑鎺у埗淇℃伅錛屾潵浜嗚В鍏朵粬鍙備笌鑰呯殑褰撳墠鎯呭喌銆?/span>

 

鍦ㄤ竴涓吀鍨嬬殑搴旂敤鍦哄悎涓嬶紝鍙戦佸獟浣撴祦鐨勫簲鐢ㄧ▼搴忓皢鍛ㄦ湡鎬у湴浜х敓鍙戦佺鎶ュ憡SR錛岃RTCP鏁版嵁鎶ュ惈鏈変笉鍚屽獟浣撴祦闂寸殑鍚屾淇℃伅錛屼互鍙婂凡緇忓彂閫佺殑鏁版嵁鎶ュ拰瀛楄妭鐨勮鏁幫紝鎺ユ敹绔牴鎹繖浜涗俊鎭彲浠ヤ及璁″嚭瀹為檯鐨勬暟鎹紶杈撻熺巼銆傚彟涓鏂歸潰錛屾帴鏀剁浼氬悜鎵鏈夊凡鐭ョ殑鍙戦佺鍙戦佹帴鏀剁鎶ュ憡RR錛岃RTCP鏁版嵁鎶ュ惈鏈夊凡鎺ユ敹鏁版嵁鎶ョ殑鏈澶у簭鍒楀彿銆佷涪澶辯殑鏁版嵁鎶ユ暟鐩佸歡鏃舵姈鍔ㄥ拰鏃墮棿鎴崇瓑閲嶈淇℃伅錛屽彂閫佺搴旂敤鏍規嵁榪欎簺淇℃伅鍙互浼拌鍑哄線榪旀椂寤訛紝騫朵笖鍙互鏍規嵁鏁版嵁鎶ヤ涪澶辨鐜囧拰鏃跺歡鎶栧姩鎯呭喌鍔ㄦ佽皟鏁村彂閫侀熺巼錛屼互鏀瑰杽緗戠粶鎷ュ鐘跺喌錛屾垨鑰呮牴鎹綉緇滅姸鍐靛鉤婊戝湴璋冩暣搴旂敤紼嬪簭鐨勬湇鍔¤川閲忋?/span>

 

2.3 RTSP瀹炴椂嫻佸崗璁?/span>

 

浣滀負涓涓簲鐢ㄥ眰鍗忚錛?span>RTSP鎻愪緵浜嗕竴涓彲渚涙墿灞曠殑妗嗘灦錛屽畠鐨勬剰涔夊湪浜庝嬌寰楀疄鏃舵祦濯掍綋鏁版嵁鐨勫彈鎺у拰鐐規挱鍙樺緱鍙兘銆傛葷殑璇存潵錛?span>RTSP鏄竴涓祦濯掍綋琛ㄧず鍗忚錛屼富瑕佺敤鏉ユ帶鍒跺叿鏈夊疄鏃剁壒鎬х殑鏁版嵁鍙戦侊紝浣嗗畠鏈韓騫朵笉浼犺緭鏁版嵁錛岃屾槸蹇呴』渚濊禆浜庝笅灞備紶杈撳崗璁墍鎻愪緵鐨勬煇浜涙湇鍔°?span>RTSP 鍙互瀵規祦濯掍綋鎻愪緵璇稿鎾斁銆佹殏鍋溿佸揩榪涚瓑鎿嶄綔錛屽畠璐熻矗瀹氫箟鍏蜂綋鐨勬帶鍒舵秷鎭佹搷浣滄柟娉曘佺姸鎬佺爜絳夛紝姝ゅ榪樻弿榪頒簡涓?span>RTP闂寸殑浜や簰鎿嶄綔銆?/span>

 

RTSP 鍦ㄥ埗瀹氭椂杈冨鍦板弬鑰冧簡HTTP/1.1鍗忚錛岀敋鑷寵澶氭弿榪頒笌HTTP/1.1瀹屽叏鐩稿悓銆?span>RTSP涔嬫墍浠ョ壒鎰忎嬌鐢ㄤ笌HTTP/1.1綾諱技鐨勮娉曞拰鎿嶄綔錛屽湪寰堝ぇ紼嬪害涓婃槸涓轟簡鍏煎鐜版湁鐨?span>Web鍩虹緇撴瀯錛屾鍥犲姝わ紝HTTP/1.1鐨勬墿灞曟満鍒跺ぇ閮藉彲浠ョ洿鎺ュ紩鍏ュ埌RTSP 涓?/span>

 

鐢?span>RTSP 鎺у埗鐨勫獟浣撴祦闆嗗悎鍙互鐢ㄨ〃紺烘弿榪幫紙Presentation Description錛夋潵瀹氫箟錛屾墍璋撹〃紺烘槸鎸囨祦濯掍綋鏈嶅姟鍣ㄦ彁渚涚粰瀹㈡埛鏈虹殑涓涓垨鑰呭涓獟浣撴祦鐨勯泦鍚堬紝鑰岃〃紺烘弿榪板垯鍖呭惈浜嗕竴涓〃紺轟腑鍚勪釜濯掍綋嫻佺殑鐩稿叧淇℃伅錛屽鏁版嵁緙栫爜/瑙g爜綆楁硶銆佺綉緇滃湴鍧銆佸獟浣撴祦鐨勫唴瀹圭瓑銆?/span>

 

铏界劧RTSP鏈嶅姟鍣ㄥ悓鏍蜂篃浣跨敤鏍囪瘑絎︽潵鍖哄埆姣忎竴嫻佽繛鎺ヤ細璇濓紙Session錛夛紝浣?span>RTSP榪炴帴騫舵病鏈夎緇戝畾鍒頒紶杈撳眰榪炴帴錛堝TCP絳夛級錛屼篃灝辨槸璇村湪鏁翠釜 RTSP榪炴帴鏈熼棿錛?span>RTSP鐢ㄦ埛鍙墦寮鎴栬呭叧闂涓RTSP鏈嶅姟鍣ㄧ殑鍙潬浼犺緭榪炴帴浠ュ彂鍑?span>RTSP 璇鋒眰銆傛澶栵紝RTSP榪炴帴涔熷彲浠ュ熀浜庨潰鍚戞棤榪炴帴鐨勪紶杈撳崗璁紙濡?span>UDP絳夛級銆?/span>

 

RTSP鍗忚鐩墠鏀寔浠ヤ笅鎿嶄綔錛?nbsp;

 

  • 媯绱㈠獟浣?/span>銆銆鍏佽鐢ㄦ埛閫氳繃HTTP鎴栬呭叾瀹冩柟娉曞悜濯掍綋鏈嶅姟鍣ㄦ彁浜や竴涓〃紺烘弿榪般傚琛ㄧず鏄粍鎾殑錛屽垯琛ㄧず鎻忚堪灝卞寘鍚敤浜庤濯掍綋嫻佺殑緇勬挱鍦板潃鍜岀鍙e彿錛涘鏋滆〃紺烘槸鍗曟挱鐨勶紝涓轟簡瀹夊叏鍦ㄨ〃紺烘弿榪頒腑搴旇鍙彁渚涚洰鐨勫湴鍧銆?nbsp;
  • 閭璇峰姞鍏?/span>銆銆濯掍綋鏈嶅姟鍣ㄥ彲浠ヨ閭璇峰弬鍔犳鍦ㄨ繘琛岀殑浼氳錛屾垨鑰呭湪琛ㄧず涓洖鏀懼獟浣擄紝鎴栬呭湪琛ㄧず涓綍鍒跺叏閮ㄥ獟浣撴垨鍏跺瓙闆嗭紝闈炲父閫傚悎浜庡垎甯冨紡鏁欏銆?nbsp;
  • 娣誨姞濯掍綋銆銆閫氱煡鐢ㄦ埛鏂板姞鍏ョ殑鍙埄鐢ㄥ獟浣撴祦錛岃繖瀵圭幇鍦鴻搴ф潵璁叉樉寰楀挨鍏舵湁鐢ㄣ備笌HTTP/1.1綾諱技錛?span>RTSP璇鋒眰涔熷彲浠ヤ氦鐢變唬鐞嗐侀氶亾鎴栬呯紦瀛樻潵榪涜澶勭悊銆?nbsp;

涓夈佹祦濯掍綋緙栫▼ 
RTP 
鏄洰鍓嶈В鍐蟲祦濯掍綋瀹炴椂浼犺緭闂鐨勬渶濂藉姙娉曪紝濡傛灉闇瑕佸湪Linux騫沖彴涓婅繘琛屽疄鏃舵祦濯掍綋緙栫▼錛屽彲浠ヨ冭檻浣跨敤涓浜涘紑鏀炬簮浠g爜鐨?span>RTP搴擄紝濡?span>LIBRTP銆?span> JRTPLIB絳夈?span>JRTPLIB鏄竴涓潰鍚戝璞$殑RTP搴擄紝瀹冨畬鍏ㄩ伒寰?span>RFC 1889璁捐錛屽湪寰堝鍦哄悎涓嬫槸涓涓潪甯鎬笉閿欑殑閫夋嫨錛屼笅闈㈠氨浠?span>JRTPLIB涓轟緥錛岃榪板浣曞湪Linux騫沖彴涓婅繍鐢?span>RTP鍗忚榪涜瀹炴椂嫻佸獟浣撶紪紼嬨?/span>

 

3.1 鐜鎼緩

 

JRTPLIB 鏄竴涓敤C++璇█瀹炵幇鐨?span>RTP搴擄紝鐩墠宸茬粡鍙互榪愯鍦?span>Windows銆?span>Linux銆?span>FreeBSD銆?span> Solaris銆?span>Unix鍜?span>VxWorks絳夊縐嶆搷浣滅郴緇熶笂銆傝涓?span>Linux 緋葷粺瀹夎JRTPLIB錛岄鍏堜粠JRTPLIB鐨勭綉绔欙紙http: //lumumba.luc.ac.be/jori/jrtplib/jrtplib.html錛変笅杞芥渶鏂扮殑婧愮爜鍖咃紝姝ゅ浣跨敤鐨勬槸jrtplib- 2.7b.tar.bz2銆傚亣璁句笅杞藉悗鐨勬簮鐮佸寘淇濆瓨鍦?span>/usr/local/src鐩綍涓嬶紝鎵ц涓嬮潰鐨勫懡浠ゅ彲浠ュ鍏惰繘琛岃В鍘嬬緝錛?/span>

 



[root@linuxgam src]# bzip2 -dc jrtplib-2.7b.tar.bz2 | tar xvf -

 



Xiao.Zhu 2007-08-08 16:38 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一二三区精品| 国产婷婷色一区二区三区| 日韩亚洲欧美高清| 日韩视频精品在线| 夜夜精品视频一区二区| 亚洲激情在线观看| 久久黄色网页| 午夜精品区一区二区三| 久久激情视频久久| 久久噜噜亚洲综合| 欧美激情 亚洲a∨综合| 亚洲精品综合久久中文字幕| 亚洲欧美成人综合| 久久久久久久综合| 欧美紧缚bdsm在线视频| 国产精品白丝黑袜喷水久久久| 国产精品一区二区你懂的| 伊人久久婷婷色综合98网| 日韩小视频在线观看专区| 香蕉成人伊视频在线观看| 久久资源av| avtt综合网| 久久久久网址| 国产精品久久久对白| 亚洲福利在线看| 亚洲欧美日韩一区二区三区在线观看| 美女视频黄免费的久久| 亚洲欧美在线高清| 欧美三日本三级少妇三2023| 亚洲高清免费在线| 午夜影院日韩| 日韩视频一区二区三区| 免费成人你懂的| 国产欧美一区二区三区视频| 99这里只有久久精品视频| 久久综合伊人77777麻豆| 在线综合视频| 欧美黄在线观看| 在线日本高清免费不卡| 久久精品一区二区| 亚洲调教视频在线观看| 欧美激情一区二区三区四区| 狠狠综合久久av一区二区小说| 欧美亚洲网站| 亚洲免费观看| 欧美另类视频| 亚洲精品日韩久久| 欧美福利视频| 久久久久久久国产| 精品999日本| 久久亚洲一区二区| 久久国产精品一区二区三区| 国产人成精品一区二区三| 亚洲欧美国产精品桃花| 一区二区三区日韩精品| 欧美日韩在线高清| 亚洲一区二区免费| 在线中文字幕日韩| 国产欧美在线| 久久久精品久久久久| 欧美一区免费| 精品不卡在线| 亚洲视频一区在线观看| 欧美理论电影在线播放| 亚洲人成高清| 亚洲黄色一区二区三区| 欧美日产一区二区三区在线观看| 日韩视频在线观看免费| 亚洲另类自拍| 欧美日韩在线亚洲一区蜜芽| 亚洲先锋成人| 午夜精品久久久久久99热软件| 国产日韩亚洲欧美| 久久综合九色综合欧美就去吻| 久久国产精品免费一区| 在线不卡视频| 亚洲激情一区二区| 国产精品久久久久一区二区三区共 | 亚洲人永久免费| 亚洲国产精品久久91精品| 欧美激情综合亚洲一二区| 亚洲图片欧洲图片av| 午夜亚洲影视| 亚洲人成人99网站| 日韩视频中午一区| 黄色另类av| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品theporn88| 久久亚洲综合色| 欧美日本韩国一区| 久久久国产精品亚洲一区| 欧美激情中文字幕一区二区 | 国一区二区在线观看| 亚洲黄色av一区| 国产日韩欧美综合一区| 亚洲片区在线| 国产日韩精品一区| 亚洲激情在线| 黄色av一区| 亚洲一区二区成人| 亚洲免费观看视频| 久久久999| 亚洲一区亚洲| 免费欧美高清视频| 久久精品二区三区| 欧美日韩一区二区三区在线视频| 久久手机精品视频| 国产精品视频一| 亚洲国产成人一区| 国语精品一区| 香蕉国产精品偷在线观看不卡| 亚洲黄色av一区| 久久精品一区二区| 久久久精品tv| 国产日韩欧美在线观看| 在线视频欧美日韩精品| 亚洲六月丁香色婷婷综合久久| 欧美一区二区三区免费在线看| 一区二区三区黄色| 欧美精品久久一区二区| 亚洲第一黄网| 亚洲国产欧美国产综合一区| 亚洲一区视频在线| 亚洲一区久久久| 亚洲福利视频三区| 久久爱www.| 久久久久久久999精品视频| 国产精品视频九色porn| 亚洲四色影视在线观看| 国产精品99久久久久久久女警| 欧美国产日韩a欧美在线观看| 免费一区二区三区| 影音先锋亚洲视频| 久久深夜福利免费观看| 美女视频黄免费的久久| 亚洲高清视频在线| 欧美好吊妞视频| 亚洲人成网站999久久久综合| 亚洲免费不卡| 国产精品yjizz| 亚洲欧美日韩中文播放| 久久精品国产久精国产爱| 韩国精品久久久999| 久久夜色精品国产欧美乱| 欧美激情视频网站| 在线性视频日韩欧美| 国产精品都在这里| 亚洲欧洲99久久| 久久综合狠狠| 亚洲精品视频免费在线观看| 美玉足脚交一区二区三区图片| 亚洲国产精品尤物yw在线观看| 9色精品在线| 国产精品成人久久久久| 先锋影音国产一区| 欧美高清在线视频观看不卡| 日韩午夜激情| 国产欧美一区二区视频| 久热国产精品视频| 99精品热6080yy久久| 久久精品99无色码中文字幕| 亚洲国产欧美另类丝袜| 国产精品福利久久久| 久久精品国产清高在天天线| 亚洲丶国产丶欧美一区二区三区 | 欧美性色aⅴ视频一区日韩精品| 先锋亚洲精品| 亚洲精品视频二区| 久久久久久国产精品mv| 一本到高清视频免费精品| 国产欧美欧美| 欧美精品综合| 久久久欧美精品sm网站| 一区二区三区精品国产| 免费看亚洲片| 午夜久久久久| 一区二区三区精密机械公司| 加勒比av一区二区| 国产精品欧美一区喷水| 欧美电影资源| 欧美一区免费视频| 亚洲私人影院| 亚洲精品乱码| 欧美刺激午夜性久久久久久久| 亚洲综合另类| 亚洲久久在线| 亚洲国产精品尤物yw在线观看| 国产欧美一区二区三区沐欲| 欧美日韩精品免费观看| 美女视频网站黄色亚洲| 欧美在线观看www| 亚洲欧美激情诱惑| 日韩午夜电影av| 一区免费观看| 久久美女性网| 亚洲免费影视| 在线午夜精品自拍| 亚洲国产欧美久久| 欧美国产精品人人做人人爱| 久久久www成人免费毛片麻豆|