nginx.conf 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #daemon off;
  2. error_log /dev/stdout info;
  3. events {
  4. worker_connections 1024;
  5. }
  6. rtmp {
  7. # 从20M增加到50M,因为4K视频帧可能会更大
  8. max_message 50M;
  9. server {
  10. listen ${RTMP_PORT};
  11. # 从4000增加到8192,提高传输效率
  12. chunk_size 8192;
  13. application stream {
  14. live on;
  15. exec ffmpeg -i rtmp://localhost:1935/stream/$name
  16. # 注释掉4K和2K的转码
  17. # # 4K (2160p) - 比特率设置为 20Mbps
  18. # -c:a libfdk_aac -b:a 192k -c:v libx264 -b:v 20000k -f flv -g 60 -r 60 -s 3840x2160 -preset superfast -profile:v high rtmp://localhost:1935/hls/$name_2160p20000kbs
  19. # # 2K (1440p) - 比特率设置为 12Mbps
  20. -c:a libfdk_aac -b:a 192k -c:v libx264 -b:v 12000k -f flv -g 60 -r 60 -s 2560x1440 -preset superfast -profile:v high rtmp://localhost:1935/hls/$name_1440p12000kbs
  21. # 1080p - 比特率设置为 6Mbps
  22. -c:a libfdk_aac -b:a 192k -c:v libx264 -b:v 6000k -f flv -g 60 -r 60 -s 1920x1080 -preset superfast -profile:v high rtmp://localhost:1935/hls/$name_1080p6000kbs
  23. # 720p
  24. -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1280x720 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_720p2628kbs
  25. # 480p
  26. -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 1000k -f flv -g 30 -r 30 -s 854x480 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_480p1128kbs
  27. # 360p
  28. -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 750k -f flv -g 30 -r 30 -s 640x360 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_360p878kbs;
  29. }
  30. application hls {
  31. live on;
  32. hls on;
  33. # 增加这些配置
  34. hls_video_buffer_size 50M; # HLS视频缓冲大小
  35. hls_max_video_buffer_size 100M; # 最大视频缓冲
  36. hls_fragment_naming system;
  37. hls_fragment 5;
  38. hls_playlist_length 10;
  39. hls_path /opt/data/hls;
  40. hls_nested on;
  41. # 注释掉4K和2K的变体
  42. # hls_variant _2160p20000kbs BANDWIDTH=20192000,RESOLUTION=3840x2160;
  43. hls_variant _1440p12000kbs BANDWIDTH=12192000,RESOLUTION=2560x1440;
  44. hls_variant _1080p6000kbs BANDWIDTH=6192000,RESOLUTION=1920x1080;
  45. hls_variant _720p2628kbs BANDWIDTH=2628000,RESOLUTION=1280x720;
  46. hls_variant _480p1128kbs BANDWIDTH=1128000,RESOLUTION=854x480;
  47. hls_variant _360p878kbs BANDWIDTH=878000,RESOLUTION=640x360;
  48. }
  49. }
  50. }
  51. http {
  52. include mime.types;
  53. default_type application/octet-stream;
  54. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  55. '$status $body_bytes_sent "$http_referer" '
  56. '"$http_user_agent" "$http_x_forwarded_for"';
  57. access_log /dev/stdout main;
  58. root /www/static;
  59. sendfile off;
  60. tcp_nopush on;
  61. server_tokens off;
  62. # 安全设置
  63. add_header X-Frame-Options "SAMEORIGIN";
  64. add_header X-XSS-Protection "1; mode=block";
  65. add_header X-Content-Type-Options "nosniff";
  66. # 超时设置
  67. client_body_timeout 12;
  68. client_header_timeout 12;
  69. keepalive_timeout 65;
  70. server {
  71. listen ${HTTP_PORT};
  72. location /hls {
  73. types {
  74. application/vnd.apple.mpegurl m3u8;
  75. video/mp2t ts;
  76. }
  77. root /opt/data;
  78. add_header Cache-Control no-cache;
  79. add_header Access-Control-Allow-Origin *;
  80. }
  81. location /live {
  82. alias /opt/data/hls;
  83. types {
  84. application/vnd.apple.mpegurl m3u8;
  85. video/mp2t ts;
  86. }
  87. add_header Cache-Control no-cache;
  88. add_header Access-Control-Allow-Origin *;
  89. }
  90. location /stat {
  91. rtmp_stat all;
  92. rtmp_stat_stylesheet stat.xsl;
  93. }
  94. location /stat.xsl {
  95. root /www/static;
  96. }
  97. location = /healthcheck {
  98. access_log off;
  99. add_header Content-Type text/plain;
  100. return 200 'ok';
  101. allow 127.0.0.1;
  102. deny all;
  103. }
  104. location /crossdomain.xml {
  105. default_type text/xml;
  106. expires 24h;
  107. }
  108. }
  109. }