77·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

»ùÓÚGstreamer¿ò¼ÜµÄsmooth streamingЭÒéµÄ²å¼þ¿ª·¢ - ͼÎÄ(6)

À´Ô´£ºÍøÂçÊÕ¼¯ ʱ¼ä£º2020-04-16 ÏÂÔØÕâÆªÎĵµ ÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:»òQQ£º ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣µã»÷ÕâÀï¸øÎÒ·¢ÏûÏ¢

»ùÓÚGStreamerµÄSmooth Streaming²å¼þ¿ª·¢

¢Étrun¡£¸ÃboxÖдæ·ÅµÄΪ¸ÃFragmentÊý¾ÝÖÐÿ¸ösampleµÄ´óС¡¢Æ«ÒÆÊ±¼ä¡¢³ÖÐøÊ±¼äºÍÊôÐÔÉèÖá£

¢Êsdtp¡£¸ÃboxÖÐûÓÐÄÚÈÝ£¬Ö»ÊÇÓÃÀ´±íʾԴÊý¾ÝµÄ½áÊø¡£

¢Ëmdat¡£¸ÃboxΪһ¸öµ¥¶ÀµÄÊý¾Ýbox£¬Ö÷Òª´æ´¢¸ÃFragmentÊý¾ÝÖеÄËùÓÐsampleÊý¾ÝÄÚÈÝ¡£

µÚËÄÕ »ùÓÚGStreamerµÄSmooth StreamingЭÒéµÄ²å¼þ¿ª·¢

4.1 socketͨÐÅЭÒéÉè¼ÆÊµÏÖ 4.1.1 socketµÄ¸ÅÄî

SocketÊǽ¨Á¢ÔÚ´«Êä²ãЭÒ飨Ö÷ÒªÊÇTCPÓëUDP£©ÉϵÄÒ»ÖÖÌ×½Ó×ֹ淶£¬×î³õÊÇÓÉÃÀ¹úµÄ¼ÓÖÝBerkley´óѧÌá³ö£¬ÎªUNIXϵͳ¿ª·¢µÄÍøÂçͨÐŽӿڡ£Ëü¶¨ÒåÁËÁ½Ì¨¼ÆËã»úÖ®¼äͨÐŵĹ淶£¬socketÆÁ±ÎÁ˵ײãͨÐÅÔª¼þºÍ¾ßÌå²Ù×÷ϵͳµÄ²îÒ죬ʹµÃÈÎÒâÁ½Ì¨°²×°ÁËTCPЭÒéÈí¼þºÍʵÏÖÁËsocket¹æ·¶µÄ¼ÆËã»úÖ®¼äµÄͨÐųÉΪ¿ÉÄÜ¡£·¢Õ¹ÖÁĿǰ£¬socketÍøÂç½Ó¿ÚÒѾ­·¢Õ¹³ÉΪTCP/IPÍøÂç×îΪͨÓõÄÍøÂç½Ó¿Ú¡£

4.1.2 socketµÄ·ÖÀà

Linuxϵͳ֧³Ö¶àÖÖÌ×½Ó×ÖÀàÐÍ£¬Ö÷ÒªÓÐÒÔÏÂ3 ÖÖ£º

1)Á÷ʽÌ×½Ó×Ö(SOCK_STREAM)£º ÕâÊÇ×î³£ÓõÄÌ×½Ó×ÖÀàÐÍ¡£TCP ЭÒéʹÓôËÀà½Ó¿Ú£¬ËüÌá¹©ÃæÏòÁ¬½ÓµÄ¡¢ÎÞ²î´íµÄÍøÂçÐÅÏ¢°üµÄ´«Êä¡£

2)Êý¾Ý±¨Ì×½Ó×Ö(SOCK_DGRAM)£ºUDPЭÒéʹÓôËÀà½Ó¿Ú£¬ËüÊÇÎÞÁ¬½ÓµÄ·þÎñ£¬ÒÔ¶ÀÁ¢µÄÊý¾Ý±¨½øÐÐÍøÂç´«Êä¡£Êý¾Ý±¨µÄ×î´ó³¤¶ÈΪ32KB£¬´«Êä²»±£Ö¤Ë³ÐòÐÔ¡¢¿É¿¿ÐÔºÍÎÞÖØ¸´ÐÔ£¬Ëüͨ³£ÓÃÓÚµ¥¸ö±¨ÎÄ´«Êä»ò¿É¿¿ÐÔ²»ÖØÒªµÄ³¡ºÏ¡£

3)ԭʼÌ×½Ó×Ö(SOCK_RAW)£ºÌṩ¶ÔÍøÂçϲãͨÐÅЭÒé(ÈçIP ЭÒé)µÄÖ±½Ó·Ã

27

»ùÓÚGStreamerµÄSmooth Streaming²å¼þ¿ª·¢

ÎÊ£¬ËüÒ»°ã²»ÊÇÌṩ¸øÆÕͨÓû§µÄ£¬²¢Ö÷ÒªÓÃÓÚ¿ª·¢ÐµÄЭÒé»òÓÃÓÚÌáȡЭÒé½ÏÒþ±ÎµÄ¹¦ÄÜ¡£

4.1.3 socketµÄÉè¼Æ¹ý³Ì

Ì×½Ó×Ö±à³Ì¾ù²ÉÓÿͻ§»ú/·þÎñÆ÷£¨C/S£©µÄЭ×÷ģʽ£¬¼´Óɿͻ§½ø³ÌÏò·þÎñÆ÷½ø³Ì·¢³öÇëÇ󣬷þÎñÆ÷½ø³ÌÖ´Ðб»ÇëÇóµÄÈÎÎñ²¢½«ÏìÓ¦½á¹û·µ»Ø¸ø¿Í»§½ø³Ì¡£±¾ÎĹ¹½¨µÄsocketͨÐÅЭÒéÉè¼ÆÈçͼ4-1Ëùʾ£º

ͼ4-1 socketͨÐÅЭÒéÁ÷³Ì

4.1.4 ·Ç×èÈûsocketµÄÉè¼Æ¹ý³Ì

×èÈûģʽÓë·Ç×èÈûģʽµÄ×î´óÇø±ðÔÚÓÚµ±ÎÞÇëÇóʱ£¬×èÈûģʽ»áһֱͣÁôÔÚº¯ÊýÖУ¬¶ø·Ç×èÈûģʽÔò»á¸ù¾Ýʵ¼ÊµÄÇé¿ö½øÐд¦Àí£¬ÌØ±ðÊÇÔÚ½ÓÊÜÊý¾Ý»ò·¢ËÍÊý¾Ýʱ¡£ÒòΪ±¾ÎĽ«Òª´Ó·þÎñÆ÷ÖÐÏÂÔØ±È½Ï´óµÄÊý¾Ý£¬ÐèÒª·ÖÅúÏÂÔØ£¬Òª¿¼Âǵ½Êý¾Ý½ÓÊܵÄÍêÕûÐÔËùÒÔÑ¡Ó÷Ç×èÈû·½Ê½¡£·Ç×èÈû·½Ê½µÄʵÏÖÖ»ÊÇÔÚ×èÈûģʽϼÓ

28

»ùÓÚGStreamerµÄSmooth Streaming²å¼þ¿ª·¢

ÈëÈçϵÄÉèÖü´¿É£º

1.µ÷ÓÃfcntl()º¯ÊýÉèÖÃsocketΪ·Ç×èÈûģʽ£¬¾ßÌåµ÷ÓÃÈçͼ4-2Ëùʾ£º

ͼ4-2 fcntlº¯Êýµ÷Ó÷½·¨

2.ÔÚread()ºÍrecv()º¯ÊýÖнøÐÐÊʵ±µØ´¦ÀíÅжϴ¦Àí£¬¾ßÌåʵÏÖÈçͼ4-3Ëùʾ£º

ͼ4-3 ·Ç×èÈûrecvº¯ÊýʵÏÖ

4.2 HTTPͨÐÅЭÒéÉè¼ÆÊµÏÖ 4.2.1 HTTPÏà¹Ø¸ÅÄî

HTTPÊÇÒ»¸öÊôÓÚÓ¦ÓòãµÄÃæÏò¶ÔÏóµÄЭÒ飬ÓÉÓÚÆä¼ò½Ý¡¢¿ìËٵķ½Ê½£¬ÊÊÓÃÓÚ·Ö²¼Ê½³¬Ã½ÌåÐÅϢϵͳ¡£ËüÓÚ1990 ÄêÌá³ö£¬¾­¹ý¼¸ÄêµÄʹÓÃÓë·¢Õ¹£¬µÃµ½²»¶ÏµØÍêÉÆºÍÀ©Õ¹¡£Ä¿Ç°ÔÚWWWÖÐʹÓõÄÊÇHTTP/1.0µÄµÚÁù°æ£¬HTTP/1.1µÄ¹æ·¶»¯¹¤×÷ÕýÔÚ½øÐÐÖ®ÖУ¬¶øÇÒHTTP-NG(Next Generation of HTTP)µÄ½¨ÒéÒѾ­Ìá³ö¡£

4.2.2 HTTPͨÐÅЭÒéµÄÌØµã

1.Ö§³Ö¿Í»§/·þÎñÆ÷ģʽ¡£

2.¼òµ¥¿ìËÙ£º¿Í»§Ïò·þÎñÆ÷ÇëÇó·þÎñʱ£¬Ö»Ðè´«ËÍÇëÇó·½·¨ºÍ·¾¶¡£ÇëÇó·½

29

»ùÓÚGStreamerµÄSmooth Streaming²å¼þ¿ª·¢

·¨³£ÓõÄÓÐGET¡¢HEAD¡¢POST¡£Ã¿ÖÖ·½·¨¹æ¶¨Á˿ͻ§Óë·þÎñÆ÷ÁªÏµµÄÀàÐͲ»Í¬¡£ÓÉÓÚHTTPЭÒé¼òµ¥£¬Ê¹µÃHTTP·þÎñÆ÷µÄ³ÌÐò¹æÄ£Ð¡£¬Òò¶øÍ¨ÐÅËٶȺܿ졣

3.Áé»î£ºHTTPÔÊÐí´«ÊäÈÎÒâÀàÐ͵ÄÊý¾Ý¶ÔÏó¡£ÕýÔÚ´«ÊäµÄÀàÐÍÓÉContent-Type ¼ÓÒÔ±ê¼Ç¡£

4.ÎÞÁ¬½Ó£ºÎÞÁ¬½ÓµÄº¬ÒåÊÇÏÞÖÆÃ¿´ÎÁ¬½ÓÖ»´¦ÀíÒ»¸öÇëÇó¡£·þÎñÆ÷´¦ÀíÍê¿Í»§µÄÇëÇ󣬲¢ÊÕµ½¿Í»§µÄÓ¦´ðºó£¬¼´¶Ï¿ªÁ¬½Ó¡£²ÉÓÃÕâÖÖ·½Ê½¿ÉÒÔ½ÚÊ¡´«Êäʱ¼ä¡£

5.ÎÞ״̬£ºHTTP ЭÒéÊÇÎÞ״̬ЭÒé¡£ÎÞ״̬ÊÇָЭÒé¶ÔÓÚÊÂÎñ´¦ÀíûÓмÇÒäÄÜÁ¦¡£È±ÉÙ״̬Òâζ×ÅÈç¹ûºóÐø´¦ÀíÐè񻂡̾µÄÐÅÏ¢£¬ÔòËü±ØÐëÖØ´«£¬ÕâÑù¿ÉÄܵ¼ÖÂÿ´ÎÁ¬½Ó´«Ë͵ÄÊý¾ÝÁ¿Ôö´ó¡£ÁíÒ»·½Ã棬ÔÚ·þÎñÆ÷²»ÐèÒªÏÈǰÐÅϢʱËüµÄÓ¦´ð¾Í½Ï¿ì¡£

4.2.3 HTTPµÄURL¸ñʽ·ÖÎö

URLÊÇÒ»ÖÖÌØÊâÀàÐ͵ÄURI£¬°üº¬ÁËÓÃÓÚ²éÕÒij¸ö×ÊÔ´µÄ×ã¹»µÄÐÅÏ¢µÄ¸ñʽÈçÏ£º

http://host[\

ÆäÖУºhttp±íʾҪͨ¹ýHTTPЭÒéÀ´¶¨Î»ÍøÂç×ÊÔ´£»host±íʾºÏ·¨µÄInternetÖ÷»úÓòÃû»òÕßIP µØÖ·£»port Ö¸¶¨Ò»¸ö¶Ë¿ÚºÅ£¬Èç¹ûΪ¿Õ£¬ÔòʹÓÃȱʡ¶Ë¿Ú80£»abs_path Ö¸¶¨ÇëÇó×ÊÔ´µÄURI£»Èç¹ûURLÖÐûÓиø³öabs_path£¬ÄÇôµ±Ëü×÷ΪÇëÇóURI ʱ£¬±ØÐëÒÔ¡°/¡±µÄÐÎʽ¸ø³ö£¬Í¨³£Õâ¸ö¹¤×÷ä¯ÀÀÆ÷×Ô¶¯°ïÎÒÃÇÍê³É¡£

4.2.4 HTTPͨÐÅЭÒéÉè¼Æ

HTTPЭÒ鿪·¢ÊÇÔÚsocketͨÐŵĻù´¡ÉÏ»ùÓÚTCPµÄЭÒ鿪·¢£¬Òò´Ë£¬±¾ÎĽ«HTTPЭÒ鿪·¢·ÖΪ£ºURL½âÎö¡¢socket´´½¨¡¢·¢Ëͱ¨Í·ÏûÏ¢¡¢»ñÈ¡ÏìÓ¦±¨Í·ÏûÏ¢ºÍ»ñȡʵÌåÕýÎĵÈÎ岿·Ö¡£

1.URL½âÎö

ΪÁ˵õ½ÊäÈëURLµØÖ·ÖеÄÖ÷»úÃû¡¢¶Ë¿ÚºÅÒÔ¼°×ÊԴ·¾¶µÈÏà¹ØÐÅÏ¢£¬ÎÒÃÇÐèÒª¶ÔÆä½øÐнâÎö¡£±¾Îĸù¾Ýʵ¼ÊÇé¿öÉè¼ÆÁËÒ»¸ö½âÎöURLµØÖ·µÄº¯ÊýÈçÏÂËù

30

»ùÓÚGStreamerµÄSmooth Streaming²å¼þ¿ª·¢

ʾ£º

int parse_url(char *url, char *server, int *port, char *path) ÆäÖУº´«Èë²ÎÊýurlΪÊäÈëµÄµØÖ·£»´«³ö²ÎÊýserverΪÖ÷»úÃû¡¢portΪ¶Ë¿ÚºÅ¡¢pathΪ×ÊÔ´Ïà¹ØÂ·¾¶¡£

2.socket´´½¨

ÒÀ¾ÝµÚÒ»ÕÂÖеĿͻ§¶Ësocket´´½¨¹ý³Ì´´½¨HTTPЭÒéµÄsocket¡£±¾ÎÄÉè¼Æ¸Ãsocket´´½¨º¯ÊýÈçÏÂËùʾ£º

int http_Socketcreate(char *hostaddr, int portnum)

ÆäÖУº´«Èë²ÎÊýhostaddrΪIPµØÖ·£»´«Èë²ÎÊýportnumΪ¶Ë¿ÚºÅ£»·µ»ØÖµÎª´´½¨³É¹¦µÄsocket id¡£

3.·¢Ëͱ¨Í·ÏûÏ¢

µ±¿Í»§¶ËÓë·þÎñÆ÷½¨Á¢ºÃÁ¬½Óºó£¬´Ëʱ¿Í»§¶ËÓ¦¸Ã·¢ËÍÇëÇóÏûÏ¢¸ø·þÎñÆ÷¡£±¾ÎÄÉè¼ÆÁËÒ»¸ö·¢ËÍÏûÏ¢µÄº¯ÊýÈçÏÂËùʾ£º

int http_Send(int sockfd, char *request)

ÆäÖУº´«Èë²ÎÊýsockfdΪ´´½¨µÄ¿Í»§¶Ësocket id£»requestΪ´«ÈëµÄÇëÇóÏûÏ¢¡£±¾ÎÄֻɿ¼°µ½HTTPÖеÄGET·½·¨£¬Òò´ËÇëÇóÏûÏ¢¸ñʽÈçÏÂËùʾ£º

sprintf(request, \ Host: %s:%d\\r\\n

Connection: Keep-Alive\\r\\n\\r\\n\ host_file, host_addr, portnum);

ÆäÖУºhost_fileΪÇëÇó×ÊԴĿ¼£»host_addrΪÖ÷»úIPµØÖ·£»portnumΪͨÐŶ˿ںš£Ìí¼Ó´òÓ¡ÐÅÏ¢¿ÉÒÔ¿´µ½·¢Ë͵ÄÇëÇó±¨Í·ÄÚÈÝÈçͼ4-4Ëùʾ£º

ͼ4-4 ·¢Ëͱ¨Í·ÏûÏ¢

4.»ñÈ¡ÏìÓ¦±¨Í·ÏûÏ¢

µ±·þÎñÆ÷ÊÕµ½¿Í»§¶ËµÄÇëÇóÏûÏ¢ºó£¬½«»á·¢ËÍÏà¹ØµÄÏìÓ¦±¨Í·ÐÅÏ¢ºÍʵÌåÕýÎĸø¿Í»§¶Ë£¬Èÿͻ§¶Ë»ñµÃʵÌåÕýÎĵÄһЩÏà¹ØÊý¾Ý¡£±¾ÎÄÉè¼ÆÁËÒ»¸ö»ñÈ¡ÏìÓ¦±¨Í·ÏûÏ¢µÄº¯ÊýÈçÏÂËùʾ£º

31

°Ù¶ÈËÑË÷¡°77cn¡±»ò¡°Ãâ·Ñ·¶ÎÄÍø¡±¼´¿ÉÕÒµ½±¾Õ¾Ãâ·ÑÔĶÁÈ«²¿·¶ÎÄ¡£Êղر¾Õ¾·½±ãÏ´ÎÔĶÁ£¬Ãâ·Ñ·¶ÎÄÍø£¬Ìṩ¾­µäС˵×ÛºÏÎÄ¿â»ùÓÚGstreamer¿ò¼ÜµÄsmooth streamingЭÒéµÄ²å¼þ¿ª·¢ - ͼÎÄ(6)ÔÚÏßÈ«ÎÄÔĶÁ¡£

»ùÓÚGstreamer¿ò¼ÜµÄsmooth streamingЭÒéµÄ²å¼þ¿ª·¢ - ͼÎÄ(6).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡ ÏÂÔØÊ§°Ü»òÕßÎĵµ²»ÍêÕû£¬ÇëÁªÏµ¿Í·þÈËÔ±½â¾ö£¡
±¾ÎÄÁ´½Ó£ºhttps://www.77cn.com.cn/wenku/zonghe/976863.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

Copyright © 2008-2022 Ãâ·Ñ·¶ÎÄÍø °æÈ¨ËùÓÐ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£º ÓÊÏ䣺tiandhx2@hotmail.com
ËÕICP±¸16052595ºÅ-18
¡Á ×¢²á»áÔ±Ãâ·ÑÏÂÔØ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£º QQ£º