моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. Установите перл
Адрес установки: https://strawberryperl.com, просто выберите установщик MSI.
2. Установите sed для Windows
Адрес загрузки: https://sourceforge.net/projects/gnuwin32/files/sed/. После выполнения программы установки настройте для каталога bin установочного пакета переменную среды.
3. Установите версию сообщества Visual Studio 2022.
4. Отhttps://github.com/nginx/nginxЗагрузите исходный код версии 1.26.1 и создайте в исходном коде новый каталог objslib.
Загрузите модуль nginx-http-flv:https://github.com/winshining/nginx-http-flv-module(Версия 1.2.10)
Скачать ПКР:https://github.com/PCRE2Project/pcre2/tags(Версия 10.2.39)
Скачать zlib:https://github.com/madler/zlib(Версия 1.3.1)
Загрузите openssl:https://www.openssl.org/source/index.html(Версия 3.0.13)
Скопируйте nginx-http-flv-module, openssl, pcre и zlib в этот каталог и разархивируйте его.
5. Просмотр параметров компиляции nginx
Загрузите скомпилированную версию nginx-1.26.1, выполните nginx.exe -V и получите следующие результаты:
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
Измените некоторые параметры:
--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. Настройка
Запустите MSYS2 или MINGW64, введите исходный код nginx nginx-release-1.26.1 и выполните команду:
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
Измените objs.msvc8/Makefile и измените третью строку:
CFLAGS = -O2 -W4 -WX -nologo -MT -Zi -Fdobjs.msvc8/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H
Удалить -WX, добавить -MP
CFLAGS = -O2 -W4 -MP -nologo -MT -Zi -Fdobjs.msvc8/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H
8. Скомпилируйте
Откройте командную строку разработчика для VS 2022, введите исходный каталог nginx, введите команду: nmake и нажмите Enter.
Время компиляции занимает 10–30 минут. После завершения скопируйте nginx.exe под objs.msvc8 в каталог исходного кода nginx.
Создайте новые каталоги logs, temp и html.
9. Установите ffmpeg
Загрузите и установите и установите каталог ffmpeg bin в качестве переменной среды.
Измените conf/nginx.conf
- worker_processes 1;
-
- events {
- worker_connections 1024;
- }
-
- http {
- include mime.types;
- default_type application/octet-stream;
-
- sendfile on;
- keepalive_timeout 65;
-
- server {
- listen 8553;
- server_name localhost;
-
- location / {
- root html;
- index index.html index.htm;
- }
-
- location /live {
- flv_live on;
- chunked_transfer_encoding on;
- add_header 'Access-Control-Allow-Origin' '*';
- add_header 'Access-Control-Allow-Credentials' 'true';
- add_header 'Access-Control-Allow-Methods' '*';
- }
-
- location /hls {
- add_header 'Access-Control-Allow-Origin' '*';
- types {
- application/vnd.apple.mpegurl m3u8;
- video/mp2t ts;
- }
- alias /test;
- expires -1;
- }
-
- location /stat {
- rtmp_stat all;
- rtmp_stat_stylesheet stat.xsl;
- }
-
- location /stat.xsl {
- root /usr/local/nginx/nginx-http-flv-module;
- }
- }
- }
-
- rtmp {
- server {
- listen 1938; #nginx监听的rtmp推流/拉流端口
- application myapp {
- live on; #当推流时,rtmp路径中的app(rtmp中的一个概念)匹配myapp时,开始直播
- meta off;
- gop_cache on;
- allow play all;
- record off;
- hls on;
- hls_path /test;
- hls_fragment 1s;
- }
- }
- }
push-поток ffmpeg (камера Haikang)
- ffmpeg -i rtsp://用户名:密码@ip:554/H.264/ch1/main/av_stream -c:v libx264 -an -f
- flv rtmp://127.0.0.1:1938/myapp/main
flv.html
- <html>
- <head>
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
- <title>flv.js demo</title>
- <style>
- .mainContainer {
- display: block;
- width: 1024px;
- margin-left: auto;
- margin-right: auto;
- }
-
- .urlInput {
- display: block;
- width: 100%;
- margin-left: auto;
- margin-right: auto;
- margin-top: 8px;
- margin-bottom: 8px;
- }
-
- .centeredVideo {
- display: block;
- width: 100%;
- height: 576px;
- margin-left: auto;
- margin-right: auto;
- margin-bottom: auto;
- }
-
- .controls {
- display: block;
- width: 100%;
- text-align: center;
- margin-left: auto;
- margin-right: auto;
- }
- </style>
- </head>
-
- <body>
-
- <p class="mainContainer">
- <video name="videoElement" id="videoElement" class="centeredVideo" controls muted autoplay width="1024"
- height="576">
- Your browser is too old which doesn't support HTML5 video.
- </video>
- </p>
-
- <script src="flv.min.js"></script>
-
- <script>
-
- function start() {
- if (flvjs.isSupported()) {
- var videoElement = document.getElementById('videoElement');
- var flvPlayer = flvjs.createPlayer({
- type: 'flv',
- url: 'http://ip:8553/live?port=1938&app=myapp&stream=main'
- });
- flvPlayer.attachMediaElement(videoElement);
- flvPlayer.load();
- flvPlayer.play();
- }
- }
-
- document.addEventListener('DOMContentLoaded', function () {
- start();
- });
- </script>
- </body>
-
- </html>
Адрес загрузки flv.min.js:http://flv.jnyzh.cn/flv.min.js
Эффект следующий: