Compartilhamento de tecnologia

Windows de servidor de vídeo de instalação e configuração do nginx

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Compilar e instalar o nginx

1. Instale o Perl

Endereço de instalação: https://strawberryperl.com, basta selecionar o instalador msi

2. Instale sed para Windows

Endereço de download: https://sourceforge.net/projects/gnuwin32/files/sed/ Após executar o programa de instalação, configure o diretório bin do pacote de instalação para a variável de ambiente.

3. Instale a versão da comunidade do Visual Studio 2022

4. Dehttps://github.com/nginx/nginxBaixe o código fonte da versão 1.26.1 e crie um novo diretório objslib no código fonte

Baixe o módulo nginx-http-flv:https://github.com/winshining/nginx-http-flv-module(Versão 1.2.10)

Baixe o pcre:https://github.com/PCRE2Project/pcre2/tags(Versão 10.2.39)

Baixar zlib:https://github.com/madler/zlib(Versão 1.3.1)

Baixe o OpenSSL:https://www.openssl.org/source/index.html(Versão 3.0.13)

Copie nginx-http-flv-module, openssl, pcre e zlib para este diretório e descompacte-o

5. Veja os parâmetros de compilação do nginx

Baixe a versão compilada do nginx-1.26.1, execute nginx.exe -V e obtenha os seguintes resultados:

configure arguments: --with-cc=cl --builddir=objs.msvc8 --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs.msvc8/lib/pcre2-10.39 --with-zlib=objs.msvc8/lib/zlib-1.3.1 --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_slice_module --with-mail --with-stream --with-stream_realip_module --with-stream_ssl_preread_module --with-openssl=objs.msvc8/lib/openssl-3.0.13 --with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' --with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module

Modifique alguns parâmetros:

--with-pcre=objs/lib/pcre2-10.39 --with-zlib=objs/lib/zlib-1.3.1 --with-openssl=objs/lib/openssl-3.0.13 --add-module=objs/lib/nginx-http-flv-module-1.2.10

7、configurar

Execute MSYS2 ou MINGW64, insira o código-fonte nginx nginx-release-1.26.1 e execute o comando:

auto/configure --with-cc=cl --builddir=objs.msvc8 --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_slice_module --with-mail --with-stream --with-stream_realip_module --with-stream_ssl_preread_module --with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' --with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module --with-pcre=objs/lib/pcre2-10.39 --with-zlib=objs/lib/zlib-1.3.1 --with-openssl=objs/lib/openssl-3.0.13 --add-module=objs/lib/nginx-http-flv-module-1.2.10

Modifique objs.msvc8/Makefile e modifique a terceira linha:

CFLAGS =  -O2  -W4 -WX -nologo -MT -Zi -Fdobjs.msvc8/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H

Remova -WX, adicione -MP

CFLAGS =  -O2  -W4 -MP -nologo -MT -Zi -Fdobjs.msvc8/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H

8. Compilar
Abra o prompt de comando do desenvolvedor para VS 2022, entre no diretório de origem nginx, digite o comando: nmake e pressione Enter

O tempo de compilação leva de 10 a 30 minutos. Após a conclusão, copie nginx.exe em objs.msvc8 para o diretório do código-fonte nginx.

Crie novos diretórios logs, temp e html.

9. Instale o ffmpeg

Baixe e instale e defina o diretório ffmpeg bin como uma variável de ambiente

Configurar nginx

Modifique conf/nginx.conf

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. server {
  11. listen 8553;
  12. server_name localhost;
  13. location / {
  14. root html;
  15. index index.html index.htm;
  16. }
  17. location /live {
  18. flv_live on;
  19. chunked_transfer_encoding on;
  20. add_header 'Access-Control-Allow-Origin' '*';
  21. add_header 'Access-Control-Allow-Credentials' 'true';
  22. add_header 'Access-Control-Allow-Methods' '*';
  23. }
  24. location /hls {
  25. add_header 'Access-Control-Allow-Origin' '*';
  26. types {
  27. application/vnd.apple.mpegurl m3u8;
  28. video/mp2t ts;
  29. }
  30. alias /test;
  31. expires -1;
  32. }
  33. location /stat {
  34. rtmp_stat all;
  35. rtmp_stat_stylesheet stat.xsl;
  36. }
  37. location /stat.xsl {
  38. root /usr/local/nginx/nginx-http-flv-module;
  39. }
  40. }
  41. }
  42. rtmp {
  43. server {
  44. listen 1938; #nginx监听的rtmp推流/拉流端口
  45. application myapp {
  46. live on; #当推流时,rtmp路径中的app(rtmp中的一个概念)匹配myapp时,开始直播
  47. meta off;
  48. gop_cache on;
  49. allow play all;
  50. record off;
  51. hls on;
  52. hls_path /test;
  53. hls_fragment 1s;
  54. }
  55. }
  56. }

fluxo push ffmpeg (câmera Haikang)

  1. ffmpeg -i rtsp://用户名:密码@ip:554/H.264/ch1/main/av_stream -c:v libx264 -an -f
  2. flv rtmp://127.0.0.1:1938/myapp/main

teste

flv.html

  1. <html>
  2. <head>
  3. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  4. <title>flv.js demo</title>
  5. <style>
  6. .mainContainer {
  7. display: block;
  8. width: 1024px;
  9. margin-left: auto;
  10. margin-right: auto;
  11. }
  12. .urlInput {
  13. display: block;
  14. width: 100%;
  15. margin-left: auto;
  16. margin-right: auto;
  17. margin-top: 8px;
  18. margin-bottom: 8px;
  19. }
  20. .centeredVideo {
  21. display: block;
  22. width: 100%;
  23. height: 576px;
  24. margin-left: auto;
  25. margin-right: auto;
  26. margin-bottom: auto;
  27. }
  28. .controls {
  29. display: block;
  30. width: 100%;
  31. text-align: center;
  32. margin-left: auto;
  33. margin-right: auto;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <p class="mainContainer">
  39. <video name="videoElement" id="videoElement" class="centeredVideo" controls muted autoplay width="1024"
  40. height="576">
  41. Your browser is too old which doesn't support HTML5 video.
  42. </video>
  43. </p>
  44. <script src="flv.min.js"></script>
  45. <script>
  46. function start() {
  47. if (flvjs.isSupported()) {
  48. var videoElement = document.getElementById('videoElement');
  49. var flvPlayer = flvjs.createPlayer({
  50. type: 'flv',
  51. url: 'http://ip:8553/live?port=1938&app=myapp&stream=main'
  52. });
  53. flvPlayer.attachMediaElement(videoElement);
  54. flvPlayer.load();
  55. flvPlayer.play();
  56. }
  57. }
  58. document.addEventListener('DOMContentLoaded', function () {
  59. start();
  60. });
  61. </script>
  62. </body>
  63. </html>

Endereço de download flv.min.js:Português Português

O efeito é o seguinte: