ÈËÉú¾ÍÊDz«ÖйúÇø

Nginx¸³ÄÜÊÓÆµÁ÷ýÌ壺´ÓÈëÃŵ½ÐÑÄ¿£¬½âËø¸ßЧ²¥·ÅмÍÔª_07
ȪԴ£ºÖ¤È¯Ê±±¨Íø×÷ÕߣºÁõ»¢2026-03-05 05:19:54
wwwzqhsauikdwjbfkjabfwqr

»º´æ²ß?ÂÔÓÅ»¯£º

ä¯ÀÀÆ÷»º´æ£º¹ØÓÚ²»¾­³£±ä»»µÄ¾²Ì¬Îļþ£¨È粿·Öµã²¥µÄýÌ寬¶Ï£©£¬¿ÉÒÔÉèÖúÏÀíµÄexpiresºÍCache-ControlÍ·£¬ÈÃä¯ÀÀÆ÷»º´æÕâЩÎļþ£¬ïÔÌ­ÖØ¸´ÏÂÔØ ¡£CDN»º´æ£º½«Nginx×÷Ϊ»ØÔ´·þÎñÆ÷£¬½ÓÈëCDN ¡£CDNÄܹ»»º´æÊÓÆµÎļþµ½È«Çò¸÷µØµÄ½Úµã£¬Óû§¿ÉÒÔ´ÓÀë×Ô¼º×î½üµÄ½Úµã»ñÈ¡ÄÚÈÝ£¬¼«´óµØ½µµÍÑÓ³Ù£¬·Öµ£NginxµÄѹÁ¦ ¡£

NginxµÄÉèÖÃӦȷ±£»ØÔ´ÇëÇóµÄ׼ȷÐÔ£¬²¢ºÏÀíÉèÖÃCache-Control ¡£

worker_processesauto;events{worker_connections1024;}http{sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_timeout65;types_hash_max_size2048;include/etc/nginx/mime.types;default_typeapplication/octet-stream;server{listen80;server_nameyour_domain.com;location/{roothtml;indexindex.htmlindex.htm;}}}#RTMPÄ£¿éÉèÖÃrtmp{server{listen1935;#RTMPĬÈ϶˿Úchunk_size4096;applicationlive{liveon;#¿ªÆôÖ±²¥Ä£Ê½recordoff;#²»Â¼ÖÆÊÓÆµÁ÷#allowpublish127.0.0.1;#ÔÊÐíÌØ¶¨IPÐû²¼#denypublishall;#allowplayall;#ÔÊÐíËùÓÐIP²¥·Å}}}

ËüʹÓÃHTTPЭÒé´«Ê䣬Òò´Ë¿ÉÒԺܺõØÊ¹ÓÃÏÖÓеÄCDN£¨ContentDeliveryNetwork£©»ù´¡ÉèÊ©£¬ÊµÏÖÈ«Çò¹æÄ£ÄڵĿìËÙ·Ö·¢ ¡£

·ÖƬ£ºNginx¿ÉÒÔͨ¹ýngx_http_slice_module»òµÚÈý·½Ä£¿é£¨Èçnginx-http-flv-moduleÅäºÏFFmpeg£©½«ÊÓÆµÇзֳÉ.tsÎļþ ¡£²¥·ÅÁÐ±í£ºÌìÉú.m3u8Îļþ£¬Ö¸ÏòÕâЩ.tsÎļþ ¡£

²¥·Å£º²¥·ÅÆ÷ͨ¹ýHTTPÇëÇó.m3u8Îļþ£¬È»ºó˳ÐòÏÂÔØ.tsÎļþ¾ÙÐв¥·Å ¡£

DASH(DynamicAdaptiveStreamingoverHTTP)£ºDASHÊÇÒ»ÖÖ¿ª·Å±ê×¼µÄ×Ô˳Ӧ±ÈÌØÂÊÁ÷ýÌåЭÒ飬ÓëHLSÀàËÆ£¬Ò²ÊÇ»ùÓÚHTTP ¡£DASHµÄ½¹µãÍ·ÄÔÊÇÆ¾Ö¤ÍøÂç´ø?¿íºÍ×°±¸ÐÔÄÜ£¬¶¯Ì¬µØÎªÓû§Ñ¡Ôñ×îºÏÊʵÄÊÓÆµÂëÂÊ£¬´Ó¶øÊµÏÖÁ÷ͨµÄ²¥·ÅÌåÑ飬×ÝÈ»ÔÚÍøÂ粨?¶¯µÄÇéÐÎÏÂÒ²ÄÜÓÐÓÃ×èÖ¹¿¨¶Ù ¡£

·Ö¶Î£ºÀàËÆÓÚHLS£¬DASHÒ²½«ÊÓÆµÇзֳÉ?С¶Î ¡£MPD(MediaPresentationDescription)£ºÒ»¸öXMLÎļþ£¬ÐÎòÁËÊÓÆµµÄ¿ÉÓÃÇø·ÖÂÊ¡¢±ÈÌØÂÊ¡¢Ê±¼äÐÅÏ¢µÈ ¡£²¥·Å£º²¥·ÅÆ÷ÆÊÎöMPDÎļþ£¬Æ¾Ö¤ÍøÂç״̬¶¯Ì¬Ñ¡ÔñÏÂÔØ²»?ͬÖÊÁ¿µÄÊÓÆµÆ¬¶Ï ¡£

×ܽá

NginxÒÔÆä׿ԽµÄÐÔÄÜ¡¢ÎÞаµÄÉèÖúÍǿʢµÄÉçÇøÖ§³Ö£¬ÔÚÊÓÆµÁ÷ýÌåÁìÓòÕ¹ÏÖ³öÖØ´óµÄDZÁ¦ ¡£´Ó×î³õµÄRTMPÖ±²¥?£¬µ½HLS¡¢DASHµÄÆÕ±éÓ¦Óã¬ÔÙµ½×÷ΪCDN½¹µã½Úµã·Ö·¢º£Á¿ÊÓÆµ£¬NginxʼÖÕÊǹ¹½¨¸ßЧ¡¢Îȹ̡¢¿ÉÀ©Õ¹ÊÓÆµ²¥?·Å½â¾ö¼Æ»®µÄÀíÏëÑ¡Ôñ ¡£

ͨ¹ýÉîÈëÃ÷È·ÖÖÖÖÁ÷ýÌåЭÒ飬²¢ÍŽáNginxµÄÖÖÖÖÓÅ»¯Õ½ÂÔ£¬Äú¿ÉÒÔÇáËÉ´òÔì³öÖª×ãÓû§ÐèÇó¡¢Ìṩ¼«Ö¹ÛÓ°ÌåÑéµÄÊÓÆµÆ½Ì¨ ¡£ÎÞÂÛÊÇСÎÒ˽¼Ò¿ª·¢ÕßÕվɴóÐÍÆóÒµ£¬Nginx¶¼ÄܳÉΪÄúÊÓÆµ·Ö·¢Ö®Â·ÉϵĵÃÁ¦ÖúÊÖ£¬ÖúÄú½âËøÊÓÆµ²¥?·ÅмÍÔª ¡£

Nginx×÷ΪÊÓÆµ·Ö·¢CDNµÄ×÷ÓÃ

µ±ÊÓÆµÁ÷Á¿¼¤Ôöʱ£¬µ¥Ì¨Nginx·þÎñÆ÷½«ÄÑÒÔÔâÊÜ ¡£Õâʱ£¬Nginx¿ÉÒÔ×÷ΪCDNµÄÖ÷Òª×é³É²¿·Ö£º

±ßÑØ½Úµã£ºNginx°²ÅÅÔÚCDNµÄ¸÷¸ö±ßÑØ½Úµã£¬»º´æ?´ó×ÚµÄÊÓÆµÄÚÈÝ ¡£µ±Óû§ÌᳫÇëÇóʱ£¬ÇëÇó»á·Óɵ½ÀëÓû§×î½üµÄ±ßÑØ½Úµã£¬´Ó?Nginx½ÚµãÖ±½Ó»ñÈ¡ÊÓÆµ£¬ÊµÏÖµÍÑÓ³Ù¡¢¸ßËÙÂʵÄ?²¥?·Å ¡£»ØÔ´£ºµ±±ßÑØ½Úµã»º´æÖÐûÓÐÓû§ÐèÒªµÄÊÓÆµÊ±£¬Nginx»áÏòÔ´Õ¾£¨¿ÉÄÜÒ²ÊÇÒ»¸öNginx¼¯Èº»òרÃŵĴ洢·þÎñÆ÷£©Ìᳫ»ØÔ´ÇëÇ󣬻ñÈ¡ÊÓÆµ²¢»º´æµ½?±ßÑØ½Úµã£¬È»ºó·µ»Ø¸øÓû§ ¡£

¸ºÔØÆ½ºâ£ºNginxÒ²¿ÉÒÔ°²ÅÅÔÚÔ´Õ¾×÷Ϊ¸ºÔØÆ½ºâÆ÷£¬Î´À´×ÔCDN±ßÑØ½ÚµãµÄÇëÇó·Ö·¢µ½ºó¶ËµÄ¶à¸öýÌå·þÎñÆ÷»ò´æ´¢·þÎñÆ÷£¬È·±£Ô´Õ¾µÄÎȹÌÐԺ͸߿ÉÓÃÐÔ ¡£

ÔÚÕâ¸öÉèÖÃÖУº

rtmp{}¿éÊÇRTMP·þÎñµÄ½¹µãÉèÖà ¡£server{}¿é½ç˵ÁËÒ»¸öRTMP·þÎñÆ÷ʵÀý ¡£listen1935;Ö¸¶¨RTMP·þÎñ¼àÌýµÄ¶Ë¿Ú£¬1935ÊÇRTMPЭÒéµÄĬÈ϶˿Ú ¡£applicationlive{}½ç˵ÁËÒ»¸öÃûΪliveµÄÓ¦Óà ¡£

µ±ÍÆÁ÷»òÀ­Á÷ʱ£¬ÎÒÃÇ»áʹÓÃÕâ¸öÓ¦ÓÃÃû£¬ÀýÈçÍÆÁ÷µØÖ·¿ÉÄÜÊÇrtmp://your_domain.com/live/stream_key ¡£liveon;¿ªÆôÖ±²¥?¹¦Ð§£¬Òâζ×ÅÕâ¸öÓ¦ÓÿÉÒÔÎüÊպͷַ¢Ö±²¥Á÷ ¡£recordoff;ĬÈÏÇéÐÎϲ»?Â¼ÖÆÖ±²¥Á÷£¬ÈôÊÇÐèÒªÂ¼ÖÆ£¬¿ÉÒÔÉèÖÃΪrecordon;²¢Ö¸¶¨Â¼ÖÆÄ¿Â¼ ¡£

Íê³ÉÉèÖúó£¬ÖØÐ¼ÓÔØNginx(nginx-sreload)£¬ÄãµÄRTMPÖ±²¥·þÎñÆ÷¾ÍÒѾ­´î½¨ºÃÁË ¡£Äã¿ÉÒÔʹÓÃOBSStudio¡¢FFmpegµÈ¹¤¾ß£¬½«ÊÓÆµÁ÷ÍÆË͵½rtmp://your_domain.com/live/your_stream_key£¬È»ºóÔÚÖ§³ÖRTMP²¥·ÅµÄ²¥·ÅÆ÷£¨ÈçVLC£©ÖУ¬Ê¹ÓÃrtmp://your_domain.com/live/your_stream_keyµØÖ·¾ÙÐв¥·Å ¡£

²¥·Å²âÊÔ£º

ʹÓÃÖ§³ÖRTMPЭÒéµÄ²¥·ÅÆ÷£¨ÈçVLC£©£¬ÔÚ²¥·ÅµØÖ·ÖÐÊäÈërtmp://your_server_ip/live/stream_key¼´¿ÉԢĿֱ²¥ ¡£

ÖÁ´Ë£¬ÎÒÃÇÒѾ­ÀֳɴÁËÒ»¸ö»ù´¡µÄ?NginxRTMPÖ±²¥·þÎñÆ÷£¬²¢Íê³ÉÁËÍÆÁ÷ºÍ²¥·ÅµÄÆðÔ´²âÊÔ ¡£Õâ½ö½öÊÇNginxÊÓÆµ²¥?·ÅÄÜÁ¦µÄ±ùɽһ½Ç£¬ÔÚÏÂÒ»²¿·Ö£¬ÎÒÃǽ«ÉîÈë̽ÌÖNginxÔÚHLSºÍDASHЭÒéϵÄÓ¦Óã¬ÒÔ¼°ÔõÑùͨ¹ýÖÖÖÖÓÅ»¯ÊֶΣ¬½øÒ»²½ÌáÉýÊÓÆµ²¥·ÅµÄÐÔÄܺÍÓû§ÌåÑé ¡£

±àÒë×°Öãº

ÏÂÔØNginxÔ´Â룺´Ó?Nginx¹ÙÍøÏÂÔØÄãÏëÒªµÄNginx°æ±¾Ô´Âë ¡£ÏÂÔØnginx-rtmp-module£º´ÓÆäGitHub¿ÍÕ»ÏÂÔØ ¡£½âѹ²¢±àÒ룺bashcd/path/to/nginx/source./configure--add-module=/path/to/nginx-rtmp-module--prefix=/usr/local/nginx...(ÆäËûÄãÐèÒªµÄÉèÖÃÑ¡Ïî)makemakeinstall×¢ÖØ£ºÈôÊÇÄãÒѾ­×°ÖÃÁËNginx£¬²¢ÇÒ²»Ï£ÍûÖØÐ±àÒ룬¿ÉÒÔ˼Á¿Ê¹ÓÃÔ¤±àÒëºÃµÄNginx°ü?£¬»òÕß²éÕÒÖ§³Ö¶¯Ì¬¼ÓÔØRTMPÄ£¿éµÄ°æ±¾ ¡£

µ«ÔÚÏÖʵÉú²úÇéÐÎÖУ¬´ÓÔ´Âë±àÒëͨ³£ÊÇ×î¼ÑÑ¡Ôñ£¬¿ÉÒÔÈ·±£Ä£¿éµÄ¼æÈÝÐÔºÍÎȹÌÐÔ ¡£

ΪʲôѡÔñNginxÀ´²¥·ÅÊÓÆµ£¿

»òÐíÄã»áÎÊ£¬²¥·ÅÊÓÆµ²»¾ÍÊǰÑÎļþ´«¸øÓû§Âð£¿ÎªÊ²Ã´»¹ÐèÒªNginxÕâÑùרҵµÄ¹¤¾ß£¿Ãյ׺ܼòÆÓ£ºÊÓÆµÁ÷ýÌåµÄ?ÖØ´óÐÔÔ¶³¬ÄãµÄÏëÏó ¡£¹Å°åµÄHTTPÎļþÏÂÔØ·½·¨£¬ÄÑÒÔÓ¦¶ÔÊÓÆµ²¥·ÅʱһÁ¬¡¢¸ß´ø¿íµÄ´«ÊäÐèÇ󣬸ü²»?ÓÃ˵ʵʱ»¥¶¯¡¢µÍÑÓ³ÙµÄÖ±²¥?³¡¾°ÁË ¡£

NginxÖ®ÒÔÊÇÍÑÓ±¶ø³ö?£¬Ö÷ÒªÔÚÓÚÆäÒÔϼ¸¸ö½¹µãÓÅÊÆ£º

¸ßÐÔÄÜÓë¸ß²¢·¢´¦Öóͷ£ÄÜÁ¦£ºNginxÒÔÆäÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄÍøÂçÄ£×ÓÖø³Æ ¡£ÕâÒâζ×ÅËüÄÜÒÔ¼«µÍµÄ×ÊÔ´ÏûºÄ£¬Í¬Ê±´¦Öóͷ£³ÉǧÉÏÍòµÄ²¢·¢ÅþÁ¬£¬ÍêÉÆÆõºÏÊÓÆµÁ÷ýÌå¶Ô¸ß²¢·¢»á¼ûµÄÐèÇó ¡£ÎÞÂÛÊǰÙÍò¼¶¹ÛÖÚͬʱԢĿֱ²¥£¬Õվɺ£Á¿Óû§µã²¥ÊÓÆµ£¬Nginx¶¼ÄÜÓÎÈÐÓÐÓà ¡£

ǿʢµÄЭÒéÖ§³Ö£ºÏÖ´úÊÓÆµÁ÷ýÌå²»ÔÙ¾ÖÏÞÓÚ¼òÆÓµÄHTTPÏÂÔØ ¡£Nginxͨ¹ý¸»ºñµÄÄ£¿éÖ§³Ö£¬Äܹ»ÎÞа´¦Öóͷ£ÖÖÖÖÁ÷ýÌåЭÒ飬ÀýÈ磺

RTMP(Real-TimeMessagingProtocol):ÕâÊÇÖ±²¥ÁìÓò×î³£Óá¢×î¾­µäµÄЭÒéÖ®Ò»£¬NginxµÄngx_rtmp_moduleÄ£¿é¸¶ÓëÁËËüǿʢµÄÖ±²¥ÍÆÁ÷ºÍÀ­Á÷ÄÜÁ¦£¬Êǹ¹½¨Ö±²¥·þÎñÆ÷µÄ»ùʯ ¡£HLS(HTTPLiveStreaming):ÓÉÆ»¹û¹«Ë¾ÍƳö£¬½«ÊÓÆµÇзֳÉСTSƬ¶Ï£¬²¢?ͨ¹ýM3U8Ë÷ÒýÎļþ¾ÙÐв¥·Å ¡£

ΪºÎÑ¡ÔñNginxÀ´²¥·ÅÊÓÆµ£¿

ÔÚÌÖÂÛNginxµÄÏêϸӦÓÃ֮ǰ£¬ÎÒÃÇÏÈÀ´Ã÷ȷһϣ¬ÎªÊ²Ã´ËüÔÚÊÓÆµ²¥·ÅÁìÓòÔÆÔÆÊÜ»¶Ó­ ¡£

¸ßÐÔÄÜÓë¸ß²¢·¢£ºNginxµÄÊÂÎñÇý¶¯¡¢Òì²½·ÇÛÕ±ÕµÄI/OÄ£×Ó£¬Ê¹ÆäÔÚ´¦Öóͷ£º£Á¿²¢·¢ÅþÁ¬Ê±ÌåÏÖ¾«²Ê ¡£Õâ¹ØÓÚÊÓÆµÁ÷ýÌåÖÁ¹ØÖ÷Òª£¬ÓÉÓÚÓû§ÐèÒªÎȹ̡¢Á÷ͨµÄ²¥?·ÅÌåÑ飬×ÝÈ»ÔÚá¯Áëʱ¶Î£¬·þÎñÆ÷Ò²Ó¦ÄÜÔâÊÜס֨´óµÄÁ÷Á¿Ñ¹Á¦ ¡£ÎÞаÐÔÓë¿ÉÀ©Õ¹ÐÔ£ºNginxÓµÓи»ºñµÄÄ£¿é»¯Éè¼Æ£¬¿ÉÒÔÆ¾Ö¤ÏÖʵÐèÇóÇáËÉÀ©Õ¹¹¦Ð§ ¡£

ÕâΪÊÓÆµÁ÷ýÌåµÄ¶¨ÖÆ»¯ÐèÇóÌṩÁ˼«´óµÄ±ãµ±£¬ÎÞÂÛÊÇÖ§³ÖºÎÖÖÁ÷ýÌåЭÒ飬ÕÕ¾ÉʵÏÖÖØ´óµÄתÂë¡¢¼øÈ¨Âß¼­£¬Nginx¶¼ÄÜͨ¹ýºÏÀíµÄÉèÖûòµÚÈý·½Ä£¿éÀ´ÊµÏÖ ¡£±¾Ç®Ð§Ò棺Ïà±ÈÓÚһЩÉÌÒµ»¯µÄÁ÷ýÌå·þÎñÆ÷½â¾ö¼Æ»®?£¬Nginx×Ô¼ºÊÇ¿ªÔ´Ãâ·ÑµÄ£¬Õâ´ó´ó½µµÍÁËÊÓÆµ·Ö·¢µÄ±¾Ç®? ¡£

Æä¸ßЧµÄ×ÊԴʹÓÃÂÊÒ²ÒâζןüµÍµÄ?Ó²¼þͶÈë ¡£³ÉÊìµÄÉú̬ϵͳ£ºNginxÓµÓÐÖØ´óµÄÓû§ÈºÌåºÍ»îÔ¾µÄÉçÇø£¬ÕâÒâζן»ºñµÄÎĵµ¡¢½Ì³ÌÏ¢Õù¾öÎÊÌâµÄ¼Æ»® ¡£Óöµ½ÄÑÌâʱ£¬×ÜÄÜÕÒµ½ÏìÓ¦µÄÖ§³Ö ¡£

NginxͬÑùÊÇ·Ö·¢DASHÊÓÆµµÄÀíÏëÑ¡Ôñ ¡£

ÎÞаµÄÉèÖÃÓëÀ©Õ¹ÐÔ£ºNginxµÄÉèÖÃÎļþ½á¹¹ÇåÎú¡¢Ò×ÓÚÃ÷È·£¬Í¨¹ý¼òÆÓµÄÉèÖü´¿ÉʵÏÖÖØ´óµÄ?Á÷ýÌå·þÎñ ¡£¸üÖ÷ÒªµÄÊÇ£¬NginxÖ§³ÖµÚÈý·½Ä£¿éµÄ?¼ÓÔØ£¬¿ÉÒÔÆ¾Ö¤ÓªÒµÐèÇó¾ÙÐж¨ÖÆ»¯¿ª·¢£¬ÀýÈ缯³ÉDRM£¨Êý×Ö°æÈ¨¹ÜÀí£©¡¢¹ã¸æ²åÈë¡¢ÊÓÆµ×ªÂëµÈ¸ß¼¶¹¦Ð§£¬¼«´óµØÍØÕ¹ÁËÆäÓ¦Óó¡¾° ¡£

×÷Ϊ·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷µÄÄÜÁ¦£ºÔÚ´óÐÍÊÓÆµÆ½Ì¨ÖУ¬Nginx¾­³£ÊÎÑÝ×Å·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷µÄ½ÇÉ« ¡£ËüÄܽ«Óû§µÄÇëÇó·Ö·¢µ½ºó¶ËµÄ¶à¸öÁ÷ýÌå·þÎñÆ÷£¬ÓÐÓÃÊèɢѹÁ¦£¬Ìá¸ßϵͳµÄÕûÌå¿ÉÓÃÐÔºÍÎȹÌÐÔ ¡£Ëü»¹ÄÜ×÷ΪCDN£¨ÄÚÈÝ·Ö·¢ÍøÂ磩µÄ±ßÑØ½Úµã£¬½«ÊÓÆµÄÚÈÝ»º´æµ½ÀëÓû§¸ü½üµÄ·þÎñÆ÷ÉÏ£¬ÏÔÖø½µµÍÑÓ³Ù£¬ÌáÉý²¥·ÅËÙÂÊ ¡£

Nginx»ù´¡ÉèÖ㺴î?½¨ÄãµÄµÚÒ»¸öÊÓÆµÁ÷ýÌå·þÎñÆ÷

ÏëÒªÓÃNginx²¥·ÅÊÓÆµ£¬Ê×ÏÈÐèҪȷ±£ÄãµÄNginxÒÑ׼ȷװÖò¢ÆôÓÃÁËÐëÒªµÄÄ£¿é ¡£¹ØÓÚRTMPЭÒéµÄÖ§³Ö£¬Í¨³£ÐèҪװÖÃngx_rtmp_module ¡£Õâ¿ÉÒÔͨ¹ý±àÒëNginxʱÌí¼Ó--add-module=/path/to/ngx_rtmp_module²ÎÊýÀ´ÊµÏÖ ¡£

ËäÈ»£¬ÕâÖ»ÊÇNginxÔÚÊÓÆµ²¥·ÅÁìÓòµÄ±ùɽһ½Ç ¡£Ëæ×ÅÁ÷ýÌåÊÖÒÕµÄÒ»Ö±Éú³¤£¬HLSºÍDASHµÈЭÒéµÄÓ¦ÓÃÔ½À´Ô½ÆÕ±é ¡£NginxÈçÄÇÀïÖÃÕâЩЭÒ飬ÓÖÓÐÄÄЩ½ø½×Íæ·¨£¿¾´ÇëÆÚ´ýÏÂÒ»²¿·ÖµÄÄÚÈÝ ¡£

Nginx½ø½×ʵ¼ù£ºHLS,DASHÓëÐÔÄÜÓÅ»¯£¬´òÔ켫Ö²¥·ÅÌåÑé

ÔÚPart1ÖУ¬ÎÒÃÇÒѾ­ÆðÔ´ÏàʶÁËNginxÔÚÊÓÆµÁ÷ýÌåÖеĻù´¡Ó¦Óã¬ÌØÊâÊÇRTMPЭÒéµÄÉèÖà ¡£ÏÖ´úÊÓÆµ²¥·ÅµÄÐèÇóÔ¶²»Ö¹ÓÚ´Ë£¬HLSºÍDASHµÈ»ùÓÚHTTPµÄÁ÷ýÌåЭÒ飬ÒòÆä¾«²ÊµÄ¿çƽ̨¼æÈÝÐÔºÍ×Ô˳ӦÄÜÁ¦£¬ÒѾ­³ÉΪÊÂʵÉϵıê×¼ ¡£

±¾²¿·Ö£¬ÎÒÃǽ«ÉîÈëNginx¶ÔHLSºÍDASHµÄÖ§³Ö£¬²¢Ì½ÌÖһϵÁÐÐÔÄÜÓÅ»¯¼¼ÇÉ£¬ÖúÄ㽫ÊÓÆµ²¥·ÅÌåÑéÍÆÏò¼«Ö ¡£

Nginx¸³ÄÜHLSºÍDASH£ºÎÞаµÄHTTPÁ÷ýÌå·Ö·¢

Nginx×Ô¼º¾ÍÊÇÒ»¸öǿʢµÄHTTP·þÎñÆ÷£¬Òò´Ë¶ÔHLSºÍDASHµÄÖ§³ÖÏÔµÃÓÈΪ×ÔÈ» ¡£ÕâÁ½ÖÖЭÒéµÄ½¹µãÔÚÓÚ½«ÊÓÆµÎļþÇзֳÉСƬ¶Ï£¬²¢Í¨¹ýM3U8(HLS)»òMPD(DASH)Ë÷ÒýÎļþ¾ÙÐÐ×éÖ¯ ¡£NginxµÄ×÷ÓþÍÊǸßЧµØ½«ÕâЩÊÓÆµÆ¬¶ÏºÍË÷ÒýÎļþͨ¹ýHTTPЭÒéÌṩӦ¿Í»§¶Ë ¡£

×ܽ᣺Nginx£¬ÊÓÆµ²¥·ÅÁìÓòµÄÍòÄÜսʿ

´ÓRTMPÖ±²¥µ½HLS/DASHµã²¥£¬Nginx¶¼Õ¹ÏÖ³öÁËÆäǿʢµÄÉúÃüÁ¦ºÍÎÞаÐÔ ¡£Ëü²»µ«½öÊÇÒ»¸öWeb·þÎñÆ÷£¬¸üÊǹ¹½¨ÏÖ´úÊÓÆµÁ÷ýÌå»ù´¡ÉèÊ©µÄ½¹µã×é¼þ ¡£Í¨¹ýÉîÈëÃ÷È·NginxµÄÉèÖÃÑ¡ÏîºÍÐÔÄÜÓÅ»¯¼¼ÇÉ£¬Äã¿ÉÒÔÓÐÓõؽâ¾öÊÓÆµ²¥·ÅÀú³Ì?ÖеÄÖÖÖÖÌôÕ½£¬ÎªÓû§´øÀ´Á÷ͨ¡¢Îȹ̡¢µÍÑÓ³ÙµÄԢĿÌåÑé ¡£

ÎÞÂÛÊÇÊ×´´µÄÖ±²¥Æ½Ì¨£¬ÕվɳÉÊìµÄÊÓÆµµã²¥·þÎñ£¬Nginx¶¼ÊÇÄãÖµµÃÐÅÈεÄǿʢºóÔ® ¡£Óµ±§Nginx£¬¿ªÆôÄãµÄÊÓÆµÁ÷ýÌåÐÂÆªÕ°ɣ¡

NginxÉèÖãº

server{listen80;server_nameyour_vod_domain.com;location/vod/{alias/path/to/your/video/files/;#ÊÓÆµÎļþ´æ·ÅĿ¼autoindexon;#¿ÉÑ¡£¬¿ªÆôĿ¼Áбí£¬Àû±ãµ÷ÊÔ#ΪHLS/DASHÉèÖÃMIMEÀàÐÍtypes{application/vnd.apple.mpegurlm3u8;video/mp2tts;application/dash+xmlmpd;video/mp4mp4;#ÈôÊÇÊÇDASHMp4»òÕßͨË×mp4}#Õë¶ÔHLS/DASHµÄ»º´æÕ½ÂÔlocation~\.(m3u8|mpd)${add_headerCache-Controlno-cache;#²¥·ÅÁÐ±í²»½¨ÒéÇ¿»º´æ}location~\.(ts|mp4)${#ýÌ寬¶Ï¿ÉÒÔ˼Á¿»º´æ£¬Æ¾Ö¤ÏÖÕæÏàÐε÷½âexpires1d;add_headerCache-Controlpublic;}}}

http{#...(ÆäËûHTTPÉèÖÃ)server{listen80;server_nameyour_domain.com;location/dash{alias/path/to/your/dash/files;#Ö¸¶¨DASHÎļþËùÔÚµÄĿ¼types{application/dash+xmlmpd;video/mp4mp4;#»òÕ߯äËûÊÓÆµÆ¬¶ÏÃûÌÃ#...(ƾ֤ÄãµÄDASHƬ¶ÏÃûÌÃÌí¼ÓÆäËûMIMEÀàÐÍ)}add_headerCache-Controlno-cache;add_headerAccess-Control-Allow-Origin*;}}}application/dash+xmlÊÇ.mpdÎļþµÄ±ê×¼MIMEÀàÐÍ ¡£

È·±£video/mp4»òÆäËûÄãʹÓõÄÊÓÆµÆ¬¶ÏÃûÌõÄMIMEÀàÐÍÒ²±»×¼È·½ç˵ ¡£

NginxÉèÖÃʾÀý(HLS)£º

¼ÙÉèÎÒÃÇʹÓÃFFmpeg½«RTMPÁ÷תΪHLS£¬²¢½«HLSÎļþ´æ´¢ÔÚNginxµÄij¸öĿ¼Ï ¡£

#...(httpÄ£¿éÉèÖÃ)...#¼ÙÉèFFmpegÒÑÉèÖú㬽«RTMPÁ÷תΪHLSÎļþµ½/var/www/hls/#²¢ÇÒNginx¼à¿Ø¸ÃĿ¼ÒÔÌṩ·þÎñserver{listen80;server_nameyour_video_domain.com;location/hls{alias/var/www/hls;#HLSÎļþ´æ´¢Ä¿Â¼add_headerCache-Controlno-cache;types{application/vnd.apple.mpegurlm3u8;video/mp2tts;}}#...ÆäËûÉèÖÃ...}#RTMPÄ£¿éÉèÖÃ(ÓÃÓÚÎüÊÕÍÆÁ÷£¬²¢¿ÉÅäºÏexecŲÓÃFFmpeg)rtmp{server{listen1935;chunk_size4096;applicationlive{liveon;recordoff;allowpublish127.0.0.1;#ÔÊÐíÍÆÁ÷allowplayall;#ÅäºÏFFmpeg½«RTMPתΪHLS(ÕâÊÇÒ»¸ö¼ò»¯µÄ?ʾÒ⣬ÏÖʵÉèÖûá¸üÖØ´ó)#trigger_play_actionon;#ÅäºÏffmpegʵʱתÂë#hlson;#hls_path/var/www/hls;#HLSÎļþÊä³ö·¾¶#hls_fragment5s;#HLSƬ¶Ïʱ³¤#hls_playlist_length60s;#²¥·ÅÁÐ±í³¤¶È}}}

¿ªÆôHTTP/2»òHTTP/3£º

ÓÅÊÆ£ºHTTP/2ºÍHTTP/3Ö§³Ö¶à·¸´Óã¨Multiplexing£©ºÍÍ·²¿Ñ¹Ëõ£¨HeaderCompression£©£¬Äܹ»ÏÔÖøïÔÌ­¼ÓÔØÊ±¼ä£¬ÓÈÆäÊÇÔÚ¼ÓÔØHLS/DASHµÄ´ó×ÚСÎļþʱ ¡£HTTP/3»¹ÒýÈëÁËQUICЭÒ飬½øÒ»²½½µµÍÁËÑӳٺͶª°üÓ°Ïì ¡£

ÉèÖãºnginxserver{listen443sslhttp2;#¿ªÆôHTTPSºÍHTTP/2#...SSLÖ¤ÊéÉèÖÃ...}HTTP/3ÐèÒªÌØÁíÍâÉèÖúÍÖ§³Ö£¬Í¨³£ÐèÒªNginx±àÒëʱ¼¯³Éngtcp2»òquicheµÈ¿â ¡£

ÔÚÕâ¸öÉèÖÃÖУº

location/hlsÆ¥ÅäËùÓÐÒÔ/hls¿ªÍ·µÄÇëÇó ¡£alias/path/to/your/hls/files;Ö¸Ïò´æ·Å.m3u8ºÍ.tsÎļþµÄ·þÎñÆ÷Ŀ¼ ¡£types{}¿éÖ¸¶¨ÁË.m3u8ºÍ.tsÎļþµÄMIMEÀàÐÍ£¬È·±£ä¯ÀÀÆ÷ÄÜ׼ȷʶ±ð ¡£

add_headerCache-Controlno-cache;ͨ³£½¨ÒéHLSË÷ÒýÎļþ²»±»»º´æ£¬ÒÔ°ü¹Ü²¥·ÅÆ÷»ñÈ¡×îеIJ¥·ÅÁбí ¡£add_headerAccess-Control-Allow-Origin*;ÔÊÐíÀ´×ÔÈκÎÓòÃûµÄÇëÇó»á¼ûÕâЩHLS×ÊÔ´£¬ÕâÔÚWeb²¥?·ÅÆ÷ÖзǾ­³£¼û ¡£

ÏÖÔÚ£¬Óû§¿ÉÒÔͨ¹ýhttp://your_domain.com/hls/your_playlist.m3u8À´»á¼ûÄãµÄHLSÊÓÆµÁ÷ ¡£

DASH(DynamicAdaptiveStreamingoverHTTP)µÄ·Ö·¢£ºDASHµÄÔ­ÀíÓëHLSÀàËÆ£¬Ò²Êǽ«ÊÓÆµÇзֳÉСƬ¶Ï£¬²¢Í¨¹ýÒ»¸öÐÎòÎļþ£¨Í¨³£ÊÇ.mpdÎļþ£©À´ÐÎòÕâЩƬ¶Ï ¡£Nginx·Ö·¢DASHµÄÉèÖÃÒ²ºÜÊÇÏàËÆ£¬Òªº¦ÔÚÓÚ׼ȷÉèÖÃMIMEÀàÐÍ ¡£

ÊÂÇéÁ÷³Ì£º

ÍÆÁ÷£ºÖ±²¥Ô´£¨ÈçOBS£©½«Ô­Ê¼ÊÓÆµÁ÷ÍÆË͵½Nginx ¡£×ªÂëÓë·ÖƬ£¨Òªº¦»·½Ú£©£º¼Æ»®Ò»£ºNginx+FFmpeg ¡£NginxÎüÊÕRTMPÁ÷£¬È»ºóͨ¹ýexecÖ¸Áî»òngx_http_flv_moduleŲÓÃFFmpeg¶ÔRTMPÁ÷¾ÙÐÐʵʱתÂë¡¢ÇÐÆ¬£¬²¢ÌìÉú?HLS/DASHÃûÌõÄÎļþ£¨.tsË鯬ºÍ.m3u8/.mpdÁÐ±í£© ¡£

¼Æ»®¶þ£ºNginx+ýÌå·þÎñÆ÷ ¡£NginxÎüÊÕRTMPÁ÷£¬×ª·¢¸ø×¨ÃŵÄýÌå·þÎñÆ÷£¨ÈçSRS,Wowza,Nginx-RTMP-ModuleÅäºÏFFmpeg£©£¬ÓÉýÌå·þÎñÆ÷Íê³ÉתÂëºÍ·ÖƬ£¬È»ºóNginxÔÙ½«ÌìÉúµÄÎļþͨ¹ýHTTP·þÎñÌṩ³öÈ¥ ¡£

HTTP·þÎñ£ºNginx×÷ΪWeb·þÎñÆ÷£¬ÈÏÕæÌṩ.m3u8/.mpdÎļþÒÔ¼°.tsýÌ寬¶Ï ¡£À­Á÷£º¹ÛÖڶ˵IJ¥·ÅÆ÷ͨ¹ýHTTPÇëÇó.m3u8/.mpdÎļþ£¬È»ºóƾ֤Áбí˳ÐòÏÂÔØ.tsÎļþ¾ÙÐв¥·Å ¡£

ÐÔÄÜÓÅ»¯£ºÈÃÊÓÆµ²¥?·ÅÈçË¿°ã˳»¬

GzipѹËõ£º¶Ô¾²Ì¬×ÊÔ´£¨Èç.m3u8ºÍ.mpdÎļþ£©ÆôÓÃGzipѹËõ£¬¿ÉÒÔÏÔÖø¼õС´«ÊäÎļþµÄ¾Þϸ£¬½µµÍ´ø¿íÏûºÄ£¬¼ÓËÙ¼ÓÔØËÙÂÊ ¡£

http{gzipon;gzip_typestext/plaintext/cssapplication/jsonapplication/javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptimage/svg+xmlapplication/vnd.apple.mpegurl;gzip_comp_level6;gzip_min_length1024;gzip_varyon;}

gzip_typesÖÐÐèÒª°üÀ¨HLSºÍDASHµÄË÷ÒýÎļþÀàÐÍ ¡£

»º´æÕ½ÂÔ£ººÏÀíÉèÖÃä¯ÀÀÆ÷»º´æºÍ·þÎñÆ÷¶Ë»º´æ£¬¿ÉÒÔïÔÌ­ÖØ¸´ÇëÇó ¡£¹ØÓÚÊÓÆµÆ¬¶Ï.tsºÍ.mp4£¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æÊ±¼ä£»¶ø¹ØÓÚ.m3u8ºÍ.mpdÎļþ£¬Ôòͨ³£²»»º´æ»òÉèÖú̵ܶĻº´æÊ±¼ä£¬ÒÔ°ü¹Üʵʱ¸üР¡£

TCPÓÅ»¯£ºµ÷½âTCP²ÎÊý£¬ÀýÈçtcp_nopushºÍtcp_nodelay£¬¿ÉÒÔÓÅ»¯TCPÅþÁ¬µÄЧÂÊ£¬ïÔÌ­ÑÓ³Ù ¡£

ÉèÖÃRTMP·þÎñÆ÷£º

±à¼­NginxµÄÖ÷ÉèÖÃÎļþ(nginx.conf)£¬Ìí¼ÓRTMPÄ£¿éµÄÉèÖãº

worker_processesauto;#ƾ֤CPU½¹µãÊý×Ô¶¯ÉèÖÃevents{worker_connections1024;#ÿ¸öworkerÀú³ÌµÄ×î´óÅþÁ¬Êý}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;server{listen80;server_namelocalhost;location/{roothtml;indexindex.htmlindex.htm;}}}#RTMPÄ£¿éÉèÖÃrtmp{server{listen1935;#RTMPĬÈ϶˿Úchunk_size4096;applicationlive{liveon;#¿ªÆôÖ±²¥Ä£Ê½recordoff;#²»Â¼ÖÆ£¬ÈôÊÇÐèÒªÂ¼ÖÆÖ±²¥¿ÉÒÔÉèΪonallowpublish127.0.0.1;#ÔÊÐíÍâµØÍÆÁ÷denypublishall;#եȡÆäËûIPÍÆÁ÷£¨Æ¾Ö¤ÏÖʵÐèÇóµ÷½â£©allowplayall;#ÔÊÐíËùÓÐIP²¥·Å}}}

Nginx¸³ÄÜÊÓÆµÁ÷ýÌ壺»ù´¡Æª

ÔÚÊý×ÖÄÚÈݱ¬Õ¨µÄʱ´ú£¬ÊÓÆµÒÔÆäÖ±¹Û¡¢Éú¶¯µÄÌØÕ÷£¬Ñ¸ËÙ³ÉΪÐÅÏ¢Èö²¥ºÍÓéÀÖÏûDzµÄ?Ö÷Á÷ ¡£ÎÞÂÛÊÇÖ±²¥»¥¶¯£¬Õվɵ㲥¹ÛÓ°£¬±³ºó¶¼Àë²»¿ªÇ¿Ê¢¶ø¸ßЧµÄÊÓÆµÁ÷ýÌå·þÎñÆ÷ ¡£¶øNginx£¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢·¢Öø³ÆµÄWeb·þÎñÆ÷£¬ÔçÒÑÓâÔ½ÁËÆä×î³õ?µÄ¶¨Î»£¬³ÉΪ¹¹½¨ÏÖ´ú»¯ÊÓÆµÁ÷ýÌå½â¾ö¼Æ»®µÄ»ùʯ ¡£

±¾ÎĽ«´øÄú×ß½øNginxµÄÊÓÆµ²¥·ÅÌìÏ£¬´Ó»ù´¡¿´·¨µ½¸ß¼¶¼¼ÇÉ£¬ÖÜÈ«½âËøNginxÔÚÊÓÆµ·Ö·¢ÁìÓòµÄÎÞÏÞ¿ÉÄÜ ¡£

NginxÓëÖ÷Á÷ÊÓÆµÁ÷ýÌåЭÒé

ҪʵÏÖÊÓÆµµÄ˳³©²¥·Å£¬Àë²»¿ªÖÖÖÖÁ÷ýÌåЭÒéµÄÖ§³Ö ¡£NginxÄܹ»Í¨¹ý²î±ðµÄÄ£¿éºÍÉèÖã¬Ö§³Ö¶àÖÖÖ÷Á÷ЭÒ飺

RTMP(Real-TimeMessagingProtocol)£ºRTMPÊÇÒ»ÖÖ»ùÓÚTCPµÄÁ÷ýÌå´«ÊäЭÒ飬Ö÷ÒªÓÃÓÚÖ±²¥³¡¾° ¡£ËüÄܹ»ÊµÏÖµÍÑÓ³ÙµÄʵʱÒôÊÓÆµ´«Ê䣬ºÜÊÇ?ÊʺÏÓÎÏ·Ö±²¥¡¢ÔÚÏß½ÌÓýµÈ¶ÔʵʱÐÔÒªÇ󼫸ߵÄÓ¦Óà ¡£NginxÉçÇø°æ×Ô¼º²¢²»Ö±½ÓÖ§³ÖRTMPЭÒ飬µ«Í¨¹ý×°ÖÃnginx-rtmp-moduleÕâ¸öµÚÈý·½Ä£¿é£¬Nginx¾ÍÄÜÒ¡ÉíÒ»±ä£¬³ÉΪǿʢµÄRTMP·þÎñÆ÷£¬³ÐÔØÖ±²¥ÍÆÁ÷ºÍ²¥·Å ¡£

ÍÆÁ÷£ºÖ±²¥Ô´£¨ÈçOBS¡¢FFmpeg£©½«ÒôÊÓÆµÊý¾Ýͨ¹ýRTMPЭÒéÍÆË͵½Nginx·þÎñÆ÷ ¡£À­Á÷£º¹ÛÖڶ˵IJ¥·ÅÆ÷£¨ÈçVLC¡¢JWPlayer£©Í¨¹ýRTMPЭÒé´ÓNginx·þÎñÆ÷À­È¡Ö±²¥Á÷ ¡£

HLS(HTTPLiveStreaming)£ºHLSÊÇÆ»¹û¹«Ë¾ÍƳöµÄÒ»ÖÖ»ùÓÚHTTPµÄÁ÷ýÌå´«ÊäЭÒé ¡£Ëü½«ÊÓÆµÇзֳÉһϵÁÐСµÄ.tsýÌ寬¶ÏÎļþ£¬²¢Ìṩһ¸ö.m3u8µÄ²¥·ÅÁбíÎļþ ¡£HLSµÄÓÅÊÆÔÚÓÚÆä¼æÈÝÐÔÇ¿£¬ÏÕЩËùÓеÄ?×°±¸ºÍä¯ÀÀÆ÷¶¼Ö§³Ö ¡£

HLS(HTTPLiveStreaming)µÄ·Ö·¢£ºÒªÊ¹ÓÃNginx·Ö·¢HLSÊÓÆµ£¬ÄãÐèҪ׼±¸ºÃHLSÃûÌõÄÊÓÆµÎļþ£¬Í¨³£°ü?º¬Ò»¸ö.m3u8Ë÷ÒýÎļþºÍһϵÁÐ.tsÊÓÆµÆ¬¶ÏÎļþ ¡£ÕâЩÎļþ¿ÉÒÔÓÉÊÓÆµ´¦Öóͷ£¹¤¾ß£¨ÈçFFmpeg£©ÔÚÍÆÁ÷Àú³ÌÖÐʵʱÌìÉú£¬»òÕßÌáǰ½«ÊÓÆµÎļþת»»ÎªHLSÃûÌà ¡£

ÔÚNginxµÄnginx.confÖУ¬Äã¿ÉÒÔÕâÑùÉèÖãº

http{#...(ÆäËûHTTPÉèÖÃ)server{listen80;server_nameyour_domain.com;location/hls{alias/path/to/your/hls/files;#Ö¸¶¨HLSÎļþËùÔÚµÄĿ¼types{application/vnd.apple.mpegurlm3u8;video/mp2tts;}add_headerCache-Controlno-cache;add_headerAccess-Control-Allow-Origin*;#ÔÊÐí¿çÓò»á¼û}}}

events{worker_connections1024;multi_accepton;#ÔÊÐíÒ»¸öworker½ÓÊܶà¸öÅþÁ¬}

SSL/TLSÓÅ»¯£ºÈôÊÇÄãµÄ?ÊÓÆµ·þÎñʹÓÃÁËHTTPS£¬ÄÇôSSL/TLSµÄÎÕÊֺͼÓÃÜÀú³Ì»á´øÀ´Ò»¶¨µÄ¿ªÏú ¡£¿ÉÒÔÆôÓÃSSLSessionCacheÀ´¼ÓËÙºóÐøÅþÁ¬£¬²¢Ë¼Á¿Ê¹ÓÃTLSv1.3ÒÔ»ñµÃ¸üºÃµÄÐÔÄܺÍÇå¾²ÐÔ ¡£

CDN¼¯³É£º¹ØÓÚÃæÏòÈ«ÇòÓû§µÄÊÓÆµ·þÎñ£¬½«Nginx×÷ΪCDNµÄ±ßÑØ½ÚµãÊÇ×î¼Ñʵ¼ù ¡£½«ÊÓÆµÄÚÈÝ»º´æ?µ½È«Çò¸÷µØµÄCDN½Úµã£¬Óû§»á¼ûʱ¾ÍÄÜ´Ó×î½üµÄ½Úµã»ñÈ¡ÄÚÈÝ£¬¼«´óµØ½µµÍÑÓ³Ù£¬ÌáÉý²¥·ÅËÙÂʺÍÎȹÌÐÔ ¡£NginxµÄ·´Ïò´úÀí¹¦Ð§¿ÉÒÔÇáËɵØÓëÖÖÖÖCDN·þÎñ¼¯³É ¡£

ÐÂÎÅ̬ÊèÉ¢£º½«ÊÓÆµÎļþ£¨»òÆä»º´æ£©Ó붯̬ÇëÇó£¨ÈçAPIŲÓã©ÍÑÀë´¦Öóͷ£ ¡£Nginx¿ÉÒÔ¸ßЧµØ´¦Öóͷ£¾²Ì¬ÊÓÆµÎļþµÄ·Ö·¢£¬¶ø½«¶¯Ì¬ÇëÇóת·¢¸øºó¶ËµÄ?Ó¦Ó÷þÎñÆ÷ ¡£

ÏÞÁ÷Óë·ÀµÁÁ´£ºÎªÁ˱£»¤ÄãµÄÊÓÆµÄÚÈݲ»±»ÀÄÓ㬿ÉÒÔÉèÖÃNginxµÄÏÞÁ÷Ä£¿é(limit_req_module)À´ÏÞÖÆµ¥Î»Ê±¼äÄÚÓû§ÇëÇóµÄÊýÄ¿£¬±ÜÃâDDOS¹¥»÷ºÍÅÀ³æ? ¡£ÉèÖ÷ÀµÁÁ´(valid_referers)¿ÉÒÔ×èÖ¹ÆäËûÍøÕ¾Ö±½ÓÒýÓÃÄãµÄÊÓÆµ ¡£

ÔðÈα༭£º Áõ»¢
ÉùÃ÷£ºÖ¤È¯Ê±±¨Á¦ÕùÐÅÏ¢ÕæÊµ¡¢×¼È·£¬ÎÄÕÂÌá¼°ÄÚÈݽö¹©²Î¿¼£¬²»×é³ÉʵÖÊÐÔͶ×ʽ¨Ò飬¾Ý´Ë²Ù×÷Σº¦×Ôµ£
ÏÂÔØ¡°Ö¤È¯Ê±±¨¡±¹Ù·½APP£¬»ò¹Ø×¢¹Ù·½Î¢ÐŹ«Öںţ¬¼´¿ÉËæÊ±Ïàʶ¹ÉÊж¯Ì¬£¬¶´²ìÕþ²ßÐÅÏ¢£¬ÕÆÎղƲú»ú»á ¡£
ÍøÓÑ̸ÂÛ
µÇ¼ºó¿ÉÒÔ½²»°
·¢ËÍ
ÍøÓÑ̸ÂÛ½ö¹©Æä±í´ïСÎÒ˽¼Ò¿´·¨£¬²¢²»Åúע֤ȯʱ±¨Ì¬¶È
ÔÝÎÞ̸ÂÛ
ΪÄãÍÆ¼ö
ÍøÕ¾µØÍ¼