»ùÓÚRtmpºÍHttp˫ЭÒéÁ÷ýÌåÊÓÆµµã²¥ÏµÍ³ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/8/15 17:27:18ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

ÁúÔ´ÆÚ¿¯Íø http://www.qikan.com.cn

»ùÓÚRtmpºÍHttp˫ЭÒéÁ÷ýÌåÊÓÆµµã²¥ÏµÍ³

×÷ÕߣºÍõÐñÅô

À´Ô´£º¡¶µçÄÔ֪ʶÓë¼¼Êõ¡·2011ÄêµÚ01ÆÚ

ÕªÒª£ºÔÚAsp.Net3.5¿ò¼Ü»ù´¡ÉϽáºÏActionscript3.0Éè¼Æ²¢ÊµÏÖÁËÁ÷ýÌåÊÓÆµµã²¥ÏµÍ³£¬²¢ÇÒͬʱ֧³ÖRtmpЭÒéºÍHttpЭÒéµÄÊÓÆµ´«Ê䣬Ïêϸ·ÖÎöÁËÁ½ÖÖЭÒéµÄµã²¥Ô­Àí£¬¸Ä½øHttpЭÒéÊÓÆµ´«Êä¡£Õë¶ÔÊÓÆµµã²¥Éè¼ÆÁËÒ»ÖÖеĸºÔؾùºâ·½·¨·ÖÁ÷ÊÓÆµÇëÇ󣬼æ¹ËÊÓÆµÊý¾Ý´«Êä¾àÀëºÍ·þÎñÆ÷¸ºÔØÐÔÄÜ£¬±£Ö¤Á÷³©²¥·Å¡£ ¹Ø¼ü´Ê£ºÁ÷ýÌ壻Rtmp£»¸ºÔؾùºâ

ÖÐͼ·ÖÀàºÅ£ºTP37 ÎÄÏ×±êʶÂ룺AÎÄÕ±àºÅ£º1009-3044(2011)01-226-03 Streaming Video on Demand System on Rtmp and Http Protocols WANG Xu-peng

(College of Electronics and Information Engineering, Tongji University, Shanghai 201804, China) Abstract: Design and implement streaming video on demand system which uses Asp.Net 3.5 framework and Actionscript3.0. The System supports both Rtmp protocol and Http protocol transmission, detailed analyze the vod principal of two protocols, improve the Http protocol

transmission. For vod, introduce a new load balancing method to distribute video Requisitions. It

considers both video data transmission distance and server load performance to ensure smooth playing. Key words: streaming media; rtmp; load balancing

ÍøÂç¼¼ÊõºÍͨÐż¼ÊõµÄ·¢Õ¹£¬ÍØ¿íÁËÍøÂç´ø¿í£¬Í¬Ê±Ò²¸ü¼Ó·á¸»ÁËÍøÂçÓ¦Óá£ÊÓÆµµã²¥ÍøÕ¾£¬ÍøÉϽÌѧÕýÔÚ³ÉΪеÄÍøÂç³è¶ù¡£±¾ÎÄÕýÊÇÉè¼ÆºÍʵÏÖÁË»ùÓÚÁ÷ýÌå¼¼ÊõµÄҽѧ½ÌѧÊÓÆµµã²¥ÏµÍ³£¬ÏµÍ³ÊÇÏÂÒ»´ú»¥ÁªÍøµÄҽѧ½Ìѧ¿ÆÑÐÆ½Ì¨µÄ×ÓÏîÄ¿,Ϊ¸÷¸ßУʦÉúÌṩ½Ìѧ·þÎñ¡£ 1 Á÷ýÌå¼ò½é

Á÷ýÌå¼¼ÊõÖ÷ÒªÊǽ«ÉùÒô£¬Ó°Ïñ£¬¶¯»­µÈÊý¾Ý·Ö³ÉÒ»¸ö¸öѹËõ°ü£¬ÏòÓû§ÌṩÁ¬ÐøµÄ£¬ÊµÊ±µÄ´«²¥£¬¶ø²»±ØµÈµ½Õû¸öÊÓÆµÎļþÏÂÔØÍê³É²ÅÄܹۿ´¡£Í¨¹ý»º´æ¼¼ÊõÌṩÁ÷³©µÄÊÓÆµ²¥·Å£¬²¢ÇÒ´ó´óËõ¶ÌÁ˲¥·ÅÑÓ³Ù£¬¸ÄÉÆÓû§ÌåÑé¡£Á÷ýÌåµÄ´«Ê䷽ʽÖ÷ÒªÓÐ˳ÐòÁ÷ʽ´«ÊäºÍʵʱÁ÷ʽ´«Êä¡£

ÁúÔ´ÆÚ¿¯Íø http://www.qikan.com.cn

˳ÐòÁ÷ʽ´«Êä¹ËÃû˼ÒåÔÚÁ¬½Ó½¨Á¢ºó£¬·þÎñÆ÷»á°´ÕÕÊý¾ÝÔÚÊÓÆµÎļþÖдæ·ÅµÄ´ÎÐò˳Ðò·¢Ë͸ø¿Í»§¶Ë£¬²»»á¶ÔÊý¾Ý×ö¶îÍâµÄ´¦Àí£¬¶øÇÒÕâÖÖ´«ÊäÈç¹û²»¼ÓÏÞÖÆµÄ»°²ÉÓõÄÊÇÒ»ÖÖ¾¡Á¦½»¸¶µÄ·½Ê½¡£ÓÉÓÚ˳ÐòÁ÷ʽ´«ÊäʵÏÖ¼òµ¥£¬´«ÊäЭÒé²ÉÓÃHttpЭÒé¼´¿É£¬ÊÓÆµÎļþ·ÅÔÚweb·þÎñÆ÷£¬²»ÐèҪרÃŵÄÁ÷ýÌå·þÎñÆ÷Ö§³Ö£¬ÍøÕ¾ºÍÊÓÆµÍêÈ«¿ÉÒÔ¼¯³ÉÔÚÒ»Æð¡£

ʵʱÁ÷ʽ´«ÊäÒªÇóÊý¾Ý´«ÊäºÍÓû§²¥·ÅÊÇͬ²½µÄ£¬ÊÓÆµ¿ÉÒÔʵʱµØ±»¹Û¿´¡£·þÎñÆ÷¶ÔÓÚÊý¾Ý»á·Ö³ÉÊÓÆµºÍÒôƵ×ö¶îÍâµÄ´¦Àí£¬Òò´ËÐèÒªÌØ¶¨µÄÁ÷ýÌå·þÎñÆ÷Ö§³Ö£¬ÈçRealServer£¬Windows Media Server¡£±¾ÎÄʵʱÁ÷ʽ´«ÊäЭÒé²ÉÓÃRtmp£¬Á÷ýÌå·þÎñÆ÷ΪRed5¡£ 2 Á÷ýÌåµã²¥½â¾ö·½°¸ 2.1 Á÷ýÌåµã²¥¼Ü¹¹

Õû¸öҽѧ½ÌѧÊÓÆµµã²¥ÏµÍ³²ÉÓÃAsp.Net3.5¿ò¼Ü¿ª·¢Íê³É£¬ÊµÏÖ»ùÓÚRtmpºÍHttpЭÒéÁ½ÖÖ´«Ê䷽ʽ¡£·þÎñÆ÷°üÀ¨¾²Ì¬·þÎñÆ÷Nginx£¬¶¯Ì¬ÄÚÈÝ·þÎñÆ÷IIS7.0£¬Rtmp·þÎñÆ÷Red5¡£ NginxÊÇÒ»¿î¸ßÐÔÄÜweb·þÎñÆ÷£¬¹¹½¨ÓÚ×îеÄlinux2.6ÄÚºËÖ®ÉÏ£¬²ÉÓÃepollģʽÀ´´¦Àí´ó¹æÄ£µÄ²¢·¢Á¬½Ó£¬²¢¿ÉÒÔÅäÖÃʹÓÃ×îеÄNPTLÏ߳̿⣬´«ÊäЧÂʲ»»áËæ×ÅÁ¬½ÓµÄÏßÐÔÔö³¤¶øÏ½µ£¬Ïà±ÈÓÚÆäËü·þÎñÆ÷ÄÚ´æÕ¼Óü«Ð¡¡£NginxÖ÷ÒªÓÃÓÚ´¦Àí¾²Ì¬Ò³ÃæºÍ×÷Ϊ·´Ïò´úÀí·þÎñÆ÷£¬¶ÔÓÚ¶¯Ì¬Ò³ÃæºÍÊÓÆµÎļþµÄÇëÇóת·¢¸øIIS7.0´¦Àí¡£ÕâÑù¼È¼Ó¿ìÁ˾²Ì¬ÄÚÈݵĴ¦ÀíËÙ¶È£¬ÓÖ±£»¤Á˺ǫ́Êý¾Ý¿âµÄ°²È«¡£

IIS7.0¶ÔÓÚËùÓеÄÇëÇóÔÚ½øÈëHttpRuntimeʱ£¬¶¼»á¾­¹ýһϵÁÐ×¢²áµÄModule½øÐйýÂË£¬×îºó¶ÔÓÚÌØ¶¨µÄÇëÇó½»ÓÉÖ¸¶¨µÄHandle´¦Àí¡£ÏµÍ³ÖÐͨ¹ýÅäÖÃWebConfigÎļþ£¬½«»ùÓÚHttpЭÒéFLVÎļþµÄÇëÇóÓ³É䏸FLVHandler£¬¸ÃÀà±ØÐëʵÏÖ½Ó¿ÚIHttpHandeler¡£

Red5ÊÇÒ»¿î¿ªÔ´·þÎñÆ÷£¬Í¨¹ý¶ÔÊý¾Ý°ü½øÐÐÄæÏò¹¤³ÌµÄÑо¿´Ó¶øÊµÏÖÁËRtmpЭÒé¡£Ö÷Òª¹¦ÄÜÊÇ´¦Àí¶ÔÓÚÁ÷ýÌåÊÓÆµµÄÇëÇ󣬴ÓFLVÎļþÖÐÌáÈ¡³öÊÓÆµºÍÒôƵ£¬²¢½«Æä´ò°ü³ÉÏûÏ¢£¬ÔÚͬһÁ¬½ÓÉÏ´«Ê䲻ͬµÄÁ÷£¬²¢Ö§³Ö¿Í»§¶ËÔڵ㲥ʱµÄ¸÷ÖÖ²Ù×÷ÃüÁîÏìÓ¦¡£

Flash²¥·ÅÆ÷ÓÉActionScript3.0±àд£¬ÊµÏÖRtmpºÍHttpÁ½ÖÖЭÒéµÄÊÓÆµÇëÇóºÍ²¥·Å£¬ÏµÍ³Ìṩ¸øÓû§ÉÏÊöÁ½Öֵ㲥·½°¸¡£Õû¸ö²¥·ÅÆ÷×÷ΪSWFÎļþǶÈëµ½webä¯ÀÀÆ÷ÖУ¬Óû§Ö»Ðè´ò¿ªÍøÒ³±ã¿É¹Û¿´ÊÓÆµ£¬ÎÞÐèÏÂÔØ²¥·ÅÆ÷¡£ ϵͳͨÐÅÁ÷³ÌͼÈçͼ1¡£

ÊÓÆµÎļþͳһΪFLV¸ñʽ£¬FLV×÷ΪĿǰ×îÁ÷ÐеÄÁ÷ýÌåÊÓÆµ¸ñʽ£¬ÆäÐγÉÎļþС£¬½á¹¹¼òµ¥£¬·Ç³£ÊʺÏÍøÂç´«Êä¡£FLVÎļþÖ÷ÒªÓÉÒ»¸öÎļþÍ·ºÍÐí¶àTag×é³É£¬TagÀàÐÍÖ÷Òª·ÖΪÊÓÆµÁ÷£¬ÒôƵÁ÷ºÍ½Å±¾Á÷¡£ÓÉÓÚÊÓÆµÐÅÏ¢ºÍÒôƵÐÅÏ¢²ÉÓ÷ֿª´æ·ÅµÄ·½Ê½£¬ËùÒÔTagÖÐÐèÒªTimestapÈ·±£ÊÓÆµºÍÒôƵͬ²½¡£TagÖеÄÊý¾ÝÇø»áÖ¸Ã÷¸ÃTagµÄ±àÂëÀà¡£FLVÎļþ¸ñʽÈç±í1¡£

ÁúÔ´ÆÚ¿¯Íø http://www.qikan.com.cn

2.2 RtmpЭÒé²¥·ÅÔ­Àí

RtmpЭÒéÌṩÁËÁ÷ýÌåÊÓÆµµÄ¸ßЧÂÊ´«Ê䣬¿ÉÒÔ¹¹¼ÜÔÚTcpЭÒéÖ®ÉÏ¡£¿Í»§¶ËÓë·þÎñÆ÷ά³Ö×ÅÒ»¸öµ¥Ò»ÓÀ¾ÃµÄÁ¬½Ó£¬Ö§³Öʵʱ½»Á÷¡£RtmpÖ÷ҪΪ¶àýÌåÊÓÆµÌṩ¶à·´«ÊäºÍÊý¾Ý·Ö°ü·þÎñ£¬²»½öÖ§³ÖÊÓÆµºÍÒôƵÊý¾Ýʵʱ´«Ê䣬»¹Ö§³ÖRPC£¨Ô¶³Ì¹ý³Ìµ÷Óã©¡£ÊÓÆµ£¬ÒôƵ£¬²Ù×÷ÃüÁ¹²Ïí¶ÔÏ󣬿ØÖÆÏûÏ¢ºÍÆäËüÀàÐÍÊý¾Ý±»´ò°ü³ÉÒ»¸ö¸öÏûÏ¢£¬²¢´òÉÏʱ¼ä´ÁÓÃÓÚͬ²½£¬²»Í¬ÀàÐ͵ÄÏûÏ¢ÔÚ²»Í¬Á÷ÉÏ´«Ê䣬¶à¸öÏûÏ¢Á÷ÓÖ½»´í¸´ÓÃÔÚͬһ¸öÁ¬½ÓÉÏ¡£ÏûÏ¢°üÀ¨MessageÍ·ºÍMessageÖ÷Ìå¡£MessageÍ·¸ñʽÈç±í2¡£

Message Stream IdÖ÷ÒªÓÃÓÚÔÚµ¥Ò»Á¬½ÓÖÐʶ±ð²»Í¬µÄÁ÷£¬°üÀ¨3¸ö×Ö½Ú¡£Meaasge TypeÓÃÓÚÖ¸Ã÷ÏûÏ¢µÄÀàÐÍ£¬Ö»ÓÐÒ»¸ö×Ö½Ú¡£ÀàÐÍ1-7±£Áô£¬ÓÃÓÚ´«Êä¿ØÖÆÏûÏ¢£¬±ÈÈçÉèÖÃchunk´óС£¬ÏûÏ¢¶ªÆú£¬Óû§¿ØÖÆÏûÏ¢µÈµÈ¡£ËäȻͨ¹ýÉèÖÃMessage Type¿ÉÒÔ½«²»Í¬ÀàÐ͵ÄÏûÏ¢ÔÚ²»Í¬µÄÁ÷ÉÏ´«Ê䣬µ«MessageÒ²ÓÐÆäȱµã£¬Òò´ËÓÖ½«Æä·Ö¸î³ÉChunk¡£·Ö¿é¿ÉÒÔ½«µÍÓÅÏȼ¶Êý¾ÝÁ¿´óµÄMessag·Ö¸î³ÉСµÄChunk£¬·ÀÖ¹Æä×èÈûÓÅÏȼ¶¸ßÊý¾ÝÁ¿Ð¡µÄMessage¡£Á÷ýÌå´«ÊäµÄ¶à·¸´ÓûùÓÚMessageÕâÒ»²ã£¬ÓëChunkÎ޹ء£

RtmpÔÚ½¨Á¢Á¬½ÓʱÊ×ÏÈÒª½øÐÐ3´ÎÎÕÊÖ£¬ÀàËÆÓÚTcpЭÒ飬²»¹ýÊÇΪÁË·þÎñÆ÷ºÍ¿Í»§¶ËͳһЭÒé°æ±¾ÐÅÏ¢¡£È»ºó½¨Á¢Á¬½Ó£¬´´½¨´«ÊäÁ÷£¬ÉèÖÃchunk´óС£¬·¢ËÍÊý¾Ý¡£ÔÚÊÓÆµ²¥·Å¹ý³ÌÖУ¬Èç¹ûÓû§Í϶¯½ø¶ÈÌõ£¬±ã»á´¥·¢seek²Ù×÷£¬¸ÃÏûÏ¢»áͨ¹ýÓëÊÓÆµÊý¾Ý²»Í¬µÄÁ÷·¢Ë͵½Red5£¬Red5»á½âÎö¿ØÖÆÃüÁ·µ»ØÓû§ÐèÒªµÄÊý¾Ý¡£

2.3 HttpЭÒé²¥·ÅÔ­Àí

¶ÔÓÚHttpЭÒéÇëÇóFLVÊÓÆµÎļþ£¬ÓÉIIS7.0ÏìÓ¦¡£Ä¬ÈÏÇé¿ö£¬Èç¹û¿Í»§¶Ë´ø¿íÁ¼ºÃ£¬ÔòÏÂÔØËÙ¶ÈÔ¶Ô¶´óÓÚ²¥·ÅËÙ¶È¡£ÓÉÓÚÒª±£´æÏÂÔØµÄÊý¾ÝÁ¿±È½Ï´ó£¬ËùÒÔÎļþ»á»º´æµ½Ó²ÅÌ£¬²¥·ÅÆ÷ÖеļÓÔØ½ø¶ÈÌõÏÔʾÏÂÔØµ½Ó²Å̵ÄÊý¾Ý¡£µ±Óû§Í϶¯²¥·ÅÊÓÆµÊ±,Ö»Äܲ¥·ÅÒÑÏÂÔØµÄÊÓÆµÐÅÏ¢£¬Èç¹û½«²¥·Å½ø¶ÈÌõÍ϶¯µ½³¬¹ý¼ÓÔØ½ø¶ÈÌõʱ£¬Ôò²¥·ÅÍ£Ö¹¡£ÎªÁ˽â¾öÕâÒ»ÎÊÌ⣬ÔÚIIS·þÎñÆ÷Ôö¼ÓרÃÅÏìÓ¦FLVÎļþµÄClass£¬¼´FLVHandler¡£

Ê×´ÎÇëÇóÊÓÆµÎļþ£¬FLVHandler»á¶ÁÈ¡·þÎñÆ÷µÄÊÓÆµÎļþͨ¹ýÍøÂçÊä³öÁ÷·¢Ë͵½¿Í»§¶Ë£¬²¥·ÅÆ÷½ÓÊÕµ½ÊÓÆµÊý¾Ýºó»áµ÷Óûص÷·½·¨onMetaData£¬¸Ã·½·¨Ö÷ÒªÊÇ´ÓFLVÎļþÖлñÈ¡MetaData£¬Ò²¾ÍÊÇÊÓÆµµÄ»ù±¾ÐÅÏ¢£¬°üÀ¨ÊÓÆµ³¤¶È£¬Ö¡ÂÊ£¬Êµ¼Ê¿í¶ÈºÍ¸ß¶ÈµÈ£¬ÆäÖл¹°üÀ¨ÊÓÆµµÄ¹Ø¼üÖ¡ÐÅÏ¢¡£FLVµÄMetaData´æ´¢Î»Öýô¸úÔÚFLV HeaderÖ®ºó£¬ÆäTagÀàÐÍÒ²¾ÍÊÇÉÏÎĽéÉÜFLV¸ñʽÖÐÌáµ½µÄ½Å±¾Á÷£¬MetaData¶ÔÓÚÊÓÆµÎļþ²¢²»ÊDZØÐëµÄ£¬µ«ÊÇÔÚ²¥·Å¹ý³ÌÖÐÒªÏÔʾÊÓÆµÊ±¼ä£¬¶ÔÊÓÆµ½øÐÐÍ϶¯ÔòÐèÒªMetaDataÐÅÏ¢¡£

ÊÓÆµÍ϶¯ÇëÇó£¬Èç¹ûÍ϶¯Î»ÖÃÔÚ²¥·ÅÆ÷¼ÓÔØ½ø¶ÈÌõ֮ǰ£¬¼´¸ÃλÖõÄÊÓÆµÊý¾ÝÒѾ­ÏÂÔØµ½Ó²ÅÌ£¬Ôò²¥·ÅÆ÷»á´Ó±¾µØÓ²Å̶ÁÈ¡Êý¾Ý½øÐв¥·Å¡£Èç¹ûÍ϶¯Î»ÖÃÊý¾Ý»¹Ã»ÓÐÏÂÔØµ½Ó²ÅÌ£¬Ê×ÏÈ»á´ÓMetaDataÖÐÕÒ³ö¾àÀëÍ϶¯Î»ÖÃ×î½üµÄ¹Ø¼üÖ¡£¬ÒòΪÊÓÆµ²¥·Åʱ±ØÐë´Ó¹Ø¼üÖ¡¿ªÊ¼²¥·Å£¬