Nginx 100%ÊÓÆµÓÅ»¯Ôõô×ö£º´ÓMP4Ö±³öµ½HLSÁ÷³©²¥·Å

ÆðÔ´£º½çÃæÐÂÎÅ2026-07-26 20:54:16
×ÖºÅ
³¬´ó
´ó
³ß¶È
С

ÈôÊÇ¡°100%ÊÓÆµÓÅ»¯¡±ÊÇÖ¸ÊÓÆµ¿Ï¶¨²»¿¨¶Ù¡¢¡¢¡¢¼ÓÔØËÙ¶ÈʼÖÕ×î¿ì£¬µ¥¿¿ Nginx ÎÞ·¨×÷³öÕâÑùµÄ±£ÕÏ¡£¡£¡£Nginx ÖØÒªÕÆ¹ÜÊÓÆµÎļþµÄ´«ÊäЧÄÜ¡¢¡¢¡¢¶ÏµãÒªÇ󡢡¢¡¢»º´æºÍ²¢·¢Á¬ÊÕÊÜÀí£»ÊÓÆµ±àÂëÖÊÁ¿¡¢¡¢¡¢·þÎñÆ÷´ø¿í¡¢¡¢¡¢´ÅÅÌ»úÄÜ¡¢¡¢¡¢²¥·ÅÆ÷Õ½ÊõÒÔ¼°Óû§ÍøÂ磬ͬÑù»áÓ°Ïì²¥·ÅÂÄÀú¡£¡£¡£

¶ÔÓÚͨ³£ MP4 ÊÓÆµ£¬Ó¦ÖصãÅäÖÃ×Ö½ÚÁìÓòÒªÇ󡢡¢¡¢sendfile¡¢¡¢¡¢ºÏÀí»º´æºÍ MP4 ÔªÊý¾ÝµØÎ»£»¶ÔÓÚ HLS ÊÓÆµ£¬ÔòÒª±ðÀëÓÅ»¯²¥·ÅÁбíÓë·ÖƬ»º´æ£¬²¢¹²Í¬¶àÂëÂÊ×ÔÊÊÓ¦²¥·Å¡£¡£¡£ÏÈÈ·¶¨ÊÓÆµÀàÐÍ£¬ÔÙÑ¡Ôñ¶ÔÓ¦¹æ»®£¬±ÈäĿ¶Ñµþ Nginx ²ÎÊý¸üÓÐЧ¡£¡£¡£

ÏÈÅжϿ¨¶Ùµ½µ×À´×ÔÄÄÀï

ÊÓÆµÎÊÌâ²»Ô¸¶¨ÊÇ Nginx ÅäÖÃÃýÎ󡣡£¡£¿£¿ £Äܹ»Ïȹ۲ìä¯ÀÀÆ÷¿ª·¢Õß¹¤¾ßÖеÄÒªÇó״̬¡¢¡¢¡¢·þÎñÆ÷´ø¿íºÍ´ÅÅ̶ÁдÇé¿ö£¬ÔÙÈ·¶¨ÓÅ»¯·½Ïò¡£¡£¡£

ÊÓÆµ²¥·ÅÒì³£ÓëÓÅÏÈÅŲ鷽Ïò
¾°Ïó ÓÅÏȲ鳭 ´¦Ö÷½Ïò
ÎÞ·¨Í϶¯½ø¶È»òÍ϶¯ºóÖØÐÂÆðÍ· ÊÇ·ñ·µ»Ø 206¡¢¡¢¡¢ÊÇ·ñ´æÔÚ Content-Range ²é³­ Range ÒªÇ󡢡¢¡¢·´Ïò´úÀíºÍÊÓÆµ·â×°Ìåʽ
ÊÓÆµ³õ´Î´ò¿ªºÜÂý MP4 µÄ moov ÔªÊý¾ÝµØÎ»¡¢¡¢¡¢´ÅÅ̶ÁÈ¡ºÍÊ××Ö½ÚÏìÓ¦¹¦·ò ÆôÓà faststart¡¢¡¢¡¢sendfile »ººÍ´æ
¶¥·åÆÚ¶àÈËͬʱ¿¨¶Ù ³ö¿Ú´ø¿í¡¢¡¢¡¢²¢·¢ÏνÓÊý¡¢¡¢¡¢»ØÔ´Á÷Á¿ ʹÓà CDN¡¢¡¢¡¢·Ö¼¶ÂëÂʺͱßÔµ»º´æ
HLS ²¥·ÅÖÐ;ƵÈÔ»º³å m3u8 ¸üС¢¡¢¡¢ts »ò m4s ·ÖƬÊÇ·ñÄÜʵʱ»ñÈ¡ ·Ö±æ²¥·ÅÁбí?ºÍ·ÖƬµÄ»º´æÕ½Êõ

MP4 Ö±³ö?ʱ£¬Ïȱ£ÕÏÍ϶¯ºÍ·Ö¶ÎÒªÇóÕý³£

HTML5 ²¥·ÅÆ÷Í϶¯½ø¶Èʱ£¬Í¨³£»áÏò·þÎñÆ÷·¢ËÍ´øÓÐ Range ÒªÇóÍ·µÄ×Ö½ÚÁìÓòÒªÇ󡣡£¡£Õý³£Çé¿öÏ£¬·þÎñÆ÷Ó¦·µ»Ø 206 Partial Content£¬²¢´øÓÐ Content-Range¡£¡£¡£ÈôÊÇʼÖÕ·µ»ØÆëÈ«Îļþ£¬Óû§Í϶¯½ø¶È¾Í¿ÉÄÜÆÚ´ýºÜ³¤¹¦·ò£¬ÉõÖÁ²û·¢ÎªÎÞ·¨¿ì½ø¡£¡£¡£

Nginx ¾²Ì¬ÎļþĬÈÏÖ§³ÖÁìÓòÒªÇ󣬵«ÈôÊÇÇ°Ãæ»¹ÓÐ CDN¡¢¡¢¡¢¶ÔÏó´æ´¢»ò·´Ïò´úÀí£¬±ØÒªÖð²ã²é³­ÊÇ·ñÃýÎóɾ³ýÁË Range ÒªÇóÍ·¡£¡£¡£Í¨³£ MP4 ÎļþÄܹ»Ê¹ÓÃÏÂÃæµÄ»ù´¡ÅäÖÃ×÷ΪÆðµã£º

location ~* \.mp4$ { sendfile on; tcp_nopush on; gzip off; add_header Accept-Ranges bytes; add_header Cache-Control "public, max-age=3600"; mp4; }

mp4 Ö¸ÁîÒÀÀµ Nginx µÄ MP4 Ä£¿£¿ £¿é£¬²¢²»ÊÇËùÓбàÒë°æ±¾¶¼Ä¬ÈÏÔ̺¬¡£¡£¡£ËüÊʺϱØÒª MP4 αÁ÷ʽ²¥·Å»ò°´ÕØÊ¼¹¦·òÒªÇóµÄ³¡¾°£¬µ«²»ÄÜ´úÌæ Range Ö§³Ö?¡£¡£¡£Èô·þÎñÆ÷ÌáÐÑδָ֪ÁӦÏÈÈ·ÈÏÄ£¿£¿ £¿éÊÇ·ñ×°Ö㬲»ÒªÖ±½Ó°ÑÕâÌõÖ¸Áî¸´ÖÆµ½³ö²ú?»·¾³¡£¡£¡£

ÊÓÆµÎļþ×ÔÉíÒ²±ØÒª´¦Öᣡ£¡£MP4 µÄ moov ÔªÊý¾ÝÈôÊÇλÓÚÎļþĩ⣬²¥·ÅÆ÷ÍùÍùÒª¶ÁÈ¡½Ï¶àÄÚÈݺóÄÜÁ¦ÆðÍ·²¥·Å¡£¡£¡£ÉÏ´«Ç°Äܹ»Í¨¹ý±àÂ빤¾ßÆôÓà faststart£¬°Ñ±ØÒªÔªÊý¾ÝÒÆ¶¯µ½Îļþǰ²¿¡£¡£¡£Õâ¸ö´¦?Àíͨ³£?±Èµ¥¶Àµ÷Õû Nginx ²ÎÊý¸üÄܸÄÉÆ³õ´Î´ò¿ªËÙ¶È¡£¡£¡£

²»Òª¶ÔÊÓÆµÄÚÈÝÆôÓà gzip ѹËõ

MP4¡¢¡¢¡¢WebM¡¢¡¢¡¢TS ºÍ M4S ÒѾ­ÊôÓÚѹËõºóµÄýÌåÌåʽ£¬³ÖÐøÊ¹Óà gzip ÍùÍù»áÔö³¤ CPU ¿÷Ëð£¬È´ºÜÄÑÏÔÖøÏ÷¼õ´«ÊäÌå»ý¡£¡£¡£Òò¶ø£¬ÊÓÆµ¶þ½øÖÆÎļþͨ³£Ó¦¹Ø±Õ gzip¡£¡£¡£

m3u8 ²¥·ÅÁбíÊÇÎı¾Îļþ£¬Ìå»ý½ÏСʱÊÕÒæÓÐÏÞ£¬µ«?Äܹ»Æ¾¾ÝÏÖʵÏìÓ¦¾Þϸ¾ö¶¨ÊÇ·ñѹËõ¡£¡£¡£ÅäÖÃʱҪ°ÑÎı¾²¥·ÅÁбíºÍÊÓÆµ·ÖƬ·Ö¸ô´¦Öã¬Ô¤·ÀÒ»¸öͨÓù涨ͬʱ×÷ÓÃÓÚËùÓÐýÌåÎļþ¡£¡£¡£

HLS ÊÓÆµÒª·Ö¸ôÉèÖò¥·ÅÁбíºÍ·ÖƬ»º´æ

HLS ͨ³£ÓÉÒ»¸ö»ò¶à¸ö m3u8 ²¥·ÅÁбí£¬ÒÔ¼°´óÁ¿ ts »ò m4s ·ÖƬ×é³É¡£¡£¡£ÕâÁ½ÀàÎļþµÄ¸üÐÂÆµÂÊ·ÖÆç£¬²»ÄÜʹÓÃÆëȫһÑùµÄ»º´æ¹¦·ò¡£¡£¡£

  • Ö±²¥ m3u8£º±ØÒªÆµÈÔ¸üУ¬»º´æ¹¦·òÓ¦¶Ì£¬±ØÒªÊ±Ê¹Óà no-cache£¬Ô¤·À²¥·ÅÆ÷Äõ½¹ýÆÚµÄ·ÖƬÁбí¡£¡£¡£
  • µã²¥ m3u8£ºÄÚÈݰ䲼ºó¸ù»ù²»±ä£¬Äܹ»ÉèÖÃÊʶȻº´æ£¬µ«?ÖØÐ°䲼ͬÃûÎļþʱҪ˼¿¼»º´æË¢Ð¡£¡£¡£
  • µã²¥ ts »ò m4s£ºÈôÊÇÎļþÃû´ø°æ±¾ºÅÇÒ²»»á±»¸²¸Ç£¬Äܹ»ÉèÖýϳ¤»º´æ?¹¦·ò£¬Ï÷¼õ·´¸´»ØÔ´¡£¡£¡£
  • Ö±²¥·ÖƬ£º»º´æ¹¦·ò²»Äܳ¬¹ýÖ±²¥´°¿ÚµÄÏÖʵÐèÒª£¬²»È»¿ÉÄܰÑ?ÒѾ­Ê§Ð§µÄ?·ÖƬ³ÖÐøÌṩ¸ø²¥·ÅÆ÷¡£¡£¡£

ÈôÊÇÊÓÆµ¿çÓò²¥·Å£¬»¹Òª²é³­ÏìÓ¦ÖÐµÄ CORS ÅäÖᣡ£¡£ÔÊÐíÆðÔ´Ó¦¾¡Á¿ÏÞ¶¨ÎªÏÖʵҵÎñÓòÃû£»Ê¹ÓõǼ̬»ò Cookie ʱ£¬²»Ò˵¥Ò»Ê¹ÓÃËÁÒâÆðÔ´µÄͨÅäÅäÖᣡ£¡£

ÏνÓÊýºÍÎļþ´«Êä²ÎÊýÒª½áºÏ·þÎñÆ÷ÉÏÏÞ

¾²Ì¬ÊÓÆµ´«ÊäÄܹ»Ê¹Óà sendfile on£¬ÈÃÎļþÊý¾Ý¸ü¸ßЧµØ´ÓÎļþϵͳ½»¸øÍøÂç²ã£¬Ï÷¼õ²»ÓÃÒªµÄÓû§Ì¬¿½±´¡£¡£¡£tcp_nopush on ͨ³£Óë sendfile һ·ʹÓã¬ÓÐÖúÓÚÏ÷¼õ·¢ËÍ´óÁ¿Ð¡Êý¾Ý°üµÄÇé¿ö¡£¡£¡£

²¢·¢²ÎÊý²»ÄÜÔ½´óÔ½ºÃ¡£¡£¡£worker_processes Äܹ»Æ¾¾Ý CPU ºËÊý×Ô¶¯ÉèÖã¬worker_connections ÔòÒª½áºÏÎļþÃèÊö·ûÉÏÏÞ¡¢¡¢¡¢´úÀíÏνÓÊýºÍÏÖʵ´ø¿íÍÆËã¡£¡£¡£Ò»¸ö Nginx ¹¤×÷¹ý³ÌµÄÏνÓÊý²¢²»µÈÓÚÄܹ»³ÐÔØµÄÓÐЧÊÓÆµÓû§Êý£¬ÓÉÓÚ·´Ïò´úÀí³¡¾°ÖУ¬Ò»ÃûÓû§¿ÉÄÜͬʱռÓÿͻ§¶ËÏνӺÍÉÏÓÎÏνÓ¡£¡£¡£

worker_processes auto; events { worker_connections 4096; } http { sendfile on; tcp_nopush on; keepalive_timeout 65; }

ÉÏÃæµÄÊýÖµÖ»ÊÇÅäÖÃ˼·£¬²»ÊÇËùÓзþÎñÆ÷¶¼Ó¦ÕÕ°á¡£¡£¡£Èç¹ûÿ¸öÓû§³ÖÐø¿÷Ëð 5 Mbps£¬100 ¸öÓû§ÀíÂÛÉϾͱØÒªÔ¼ 500 Mbps µÄÊÓÆµÁ÷Á¿£¬»¹ÒªÔ¤ÁôºÍ̸¿ªÏú¡¢¡¢¡¢ÍøÒ³ÒªÇóºÍÆäËûÒµÎñµÄ´ø¿í¡£¡£¡£´ø¿í²»ÊµÊ±£¬³ÖÐøÔö³¤ worker_connections ²¢²»Äܽâ¾ö¿¨¶Ù¡£¡£¡£

·´Ïò´úÀíºÍ CDN ³¡¾°ÒªÖصã²é³­»ØÔ´

ÈôÊÇ Nginx Ç°ÃæÏÎ½Ó CDN£¬»òÕß Nginx ºóÃæ»¹ÓÐÀûÓ÷þÎñ¡¢¡¢¡¢¶ÔÏó´æ´¢£¬ÊÓÆµÒªÇóµÄÆ¿¾±¿ÉÄܳʴ˿̻ØÔ´Á´Â·¡£¡£¡£Ó¦È·ÈÏÉÏÓÎÊÇ·ñÖ§³Ö Range£¬ÊÇ·ñÕýÈ··µ»Ø Content-Length¡¢¡¢¡¢Content-Type ºÍ Content-Range£¬ÒÔ¼° CDN ÊÇ·ñ»º´æÁË·ÖÆ¬¡£¡£¡£

¹Ì¶¨²»±äµÄµã²¥ÊÓÆµÊʺÏʹÓôø°æ±¾ºÅµÄÎļþÃû£¬ÀýÈç¸ü»»ÊÓÆµºóŤתÎļþõè¾¶£¬¶ø²»ÊǸ²¸Çͳһ¸öµØÖ·¡£¡£¡£ÕâÑùÄܹ»°²ÐÄÉèÖýϳ¤»º´æ£¬Ò²ÄÜÔ¤·ÀÓû§ÓÉÓھɻº´æ³ÖÐø²¥·Å¹ýÆÚÎļþ¡£¡£¡£´øÈ¨ÏÞµÄÊÓÆµÔòÒªÉóÉ÷ÉèÖù«¹²»º´æ£¬Ô¤·À·ÖÆçÓû§Ö®¼ä²úÉúÄÚÈÝԽȨ¡£¡£¡£

¶ÔÓÚ´óÁ¿ÒìµØÓû§£¬Nginx Ô´Õ¾Ö»ÕÆ¹Ü²»±ä»ØÔ´£¬CDN ÕÆ¹Ü¾Í½ü·Ö·¢£¬Í¨³£±Èµ¥Ì¨·þÎñÆ÷Ö±½Ó³ÐÔØËùÓÐÊÓÆµÁ÷Á¿¸üºÏÀí¡£¡£¡£ÈôÊÓÆµÎļþºÜ´ó¡¢¡¢¡¢½Ó¼û½âÓò·ÖÉ¢£¬ÓÅÏÈÆÀ¹À´ø¿íºÍ CDN ÉäÖÐÂÊ£¬¶ø²»ÊÇÏȵ÷ÕûÏνӳ¬²»¶Ï¼ä¡£¡£¡£

Nginx½â¾ö²»Á˵IJ¿ÃÅ£¬Òª´Ó±àÂëºÍ²¥·ÅÆ÷¶¯ÊÖ

Nginx ²»»á×Ô¶¯½µµÍÊÓÆµÂëÂÊ£¬Ò²²»»á°ÑÒ»¸ö 4K ÎļþÔì³ÉÊʺÏÒÆ¶¯ÍøÂç²¥·ÅµÄ°æ±¾¡£¡£¡£ÏëÈÃ·ÖÆçÍøÂçǰÌá϶¼Î¬³ÖÁ÷³©£¬Í¨³£±ØÒª³ï±¸¶àµµÇ峺¶ÈºÍÂëÂÊ£¬²¢Èò¥·ÅÆ÷ƾ¾Ýʵʱ´ø¿í½øÐÐ×ÔÊÊÓ¦Çл»¡£¡£¡£

  • µã²¥ MP4£º³ï±¸ÏàÒ˵ķֱæÂʺÍÂëÂÊ£¬²¢½« moov ÔªÊý¾Ý·Åµ½Îļþǰ²¿¡£¡£¡£
  • µã²¥ HLS£ºÌìÉú¶àÂëÂʲ¥·ÅÁбí£¬Èò¥·ÅÆ÷ÔÚÍøÂç±ä²îʱÇл»µ½µÍÂëÂÊ·ÖÆ¬¡£¡£¡£
  • Ö±²¥ HLS£ºÎ¬³Ö¹Ø¼üÖ¡¾àÀëÓë·ÖƬÌìǵЭµ÷£¬Ô¤·ÀÇл»ÂëÂÊʱ³öÏÖ³¤¹¦·òÆÚ´ý¡£¡£¡£
  • ÒÆ¶¯¶Ë²¥·Å£º²»?ÒªÖ»Ìṩ¸ßÂëÂʰ汾£¬Ó¦Æ¾¾ÝÖÕ¶ËÆÁÄ»ºÍÍøÂçǰÌáÉèÖúÏÀíµÄÇ峺¶ÈÌݶÈ¡£¡£¡£

ÈôÊÇÔ­ÊÓÆµ×ÔÉíÂëÂÊÔ¶¸ßÓÚÓû§ÍøÂç¿É½ÓÊÜÁìÓò£¬Nginx Ö»ÄܰÑÎÊÌâ¸ü¿ìµØ?´«¸øÓû§£¬²»ÄÜ´Óµ××ÓÉϽâ³ý»º³å¡£¡£¡£Òò¶ø£¬¡°100%ÓÅ»¯¡±¸üÊʺÏ×÷ΪÅŲéÖ¸±ê£ºÈÃÒªÇ󡢡¢¡¢Îļþ¡¢¡¢¡¢»º´æ¡¢¡¢¡¢´ø¿íºÍ±àÂëÿһ²ã¶¼Ã»ÓÐÏÔÖøÆ¿¾±£¬¶ø²»ÊÇÒÀÀµÄ³Ò»¸öÉñÆæ¿ª¹Ø¡£¡£¡£

ÉÏÏߺóÓÃËÄÏîÖ¸±êÑéÖ¤³ÉЧ

  • ²é¿´ÊÓÆµ³õ´ÎÒªÇóÊÇ·ñ·µ»ØÕýÈ·µÄ Content-Type£¬MP4 ²»Ó¦±»?µ±³Éͨ³£Îı¾»òÏÂÔØÎļþ´¦Öᣡ£¡£
  • Í϶¯²¥·Å½ø¶È£¬²é³­ÒªÇóÊÇ·ñ³öÏÖ 206 Partial Content¡¢¡¢¡¢Accept-Ranges ºÍÓÐЧµÄ Content-Range¡£¡£¡£
  • ¶Ô±È»º´æÉäÖÐǰºóµÄÊ××Ö½Ú¹¦·ò¡¢¡¢¡¢ÏÂÔØËٶȺͻØÔ´Á÷Á¿£¬È·ÈÏ»º´æµÄÈ·Ï÷¼õÁËԴվѹÁ¦¡£¡£¡£
  • Ôڵʹø¿í¡¢¡¢¡¢Òƶ¯ÍøÂçºÍ¸ß²¢·¢Çé¿öϱðÀë²â?ÊÔ£¬¹Û²ì Nginx ½Ó¼ûÈÕÖ¾¡¢¡¢¡¢ÃýÎóÈÕÖ¾¡¢¡¢¡¢CPU¡¢¡¢¡¢´ÅÅÌ I/O ºÍ³ö¿Ú´ø¿í¡£¡£¡£

Ö»Óе±ÎļþÌåʽ¡¢¡¢¡¢Range ÒªÇ󡢡¢¡¢»º´æÕ½Êõ¡¢¡¢¡¢´ø¿íÈÝÁ¿ºÍ×ÔÊÊÓ¦ÂëÂÊͬʱƥÅäÒµÎñ³¡¾°Ê±£¬Nginx ÊÓÆµ²¥·ÅÄÜÁ¦»ñµÃ²»±äµÄÁ÷³©±í?ÏÖ¡£¡£¡£

У¶Ô£ºµË±þÇ¿(rsln0LhyhW9amXY2JGVPfAtTlKfWu1zrzKg)

ÔðÈαà×룺 µË±þÇ¿
ΪÄãÍÆ¼ö
Óû§ÆÀÂÛ
µÇ¼ºóÄܹ»½²»°
ÍøÓÑÆÀÂÛ½ö¹©Æä±í°×СÎÒ¼û½â£¬²¢²»Åúע֤ȯʱ±¨Ì¬¶È
ÔÝÎÞÆÀÂÛ
ÍøºìÑëÆóÎÄÂÃÂ¥Å̲ÈÓÜÁֺ顮¸ß¡¯·çÏÕºìÏß.£¬ ±±¾©É½¹È¸ßΣԤ¾¯£¡£¡£¡
¡¾ÍøÕ¾µØÍ¼¡¿