Size: a a a

2020 February 06

k

kiosaku in nginx_ru
либо через debug_connection
источник

Y

Yuri in nginx_ru
dev null
приветствую

понадобилось сделать отдачу видео через веб, добавил такие строчки в nginx.conf:
rtmp {
   server {
       listen 192.168.1.11:1935;
       application v1 {
           play /video;
       }
   }
}
машинка мощная и шустрая
но при попытке открыть VLC (rtmp://192.168.1.11/v1/s.mp4) простейший файлик
-rw-r--r-- 1 w w 39577 Feb  6 17:37 s.mp4
он запускается только через 23! секунды

$ cat /etc/issue
Ubuntu 18.04.3 LTS \n \l

+ apt install nginx libnginx-mod-rtmp

куда рыть?
видимо, скачивается сначала
источник

Y

Yuri in nginx_ru
файлики, вроде как, не так отдавать надо
источник

dn

dev null in nginx_ru
39 килобайт размер то?
источник

dn

dev null in nginx_ru
на локальной машине же и смотрю
источник

Y

Yuri in nginx_ru
У меня, например, если mp4-файлик, то вот так
location ~* ^.+\.mp4$ {
   root /www/тут-директория/htdocs;
   access_log off;
   expires max;
   try_files $uri @videofallback;
   mp4;
 }
источник

Y

Yuri in nginx_ru
для flv также, только директива flv; вместо mp4;
источник

Y

Yuri in nginx_ru
А если rtmp - там все по-другому 🙂
источник

dn

dev null in nginx_ru
дак мне не сам файл надо отдать, а именно как поток
источник

dn

dev null in nginx_ru
чтобы его можно было смотреть онлайн
источник

Y

Yuri in nginx_ru
rtmp {
 live on;
 hls on;
 hls_fragment 5s;
 dash on;
 server {
   listen 1935;
   application cam {
     hls_path /www/video/hls/cam;
     dash_path /www/video/dash/cam;
   }
   
   exec_static /etc/nginx/ffmpeg1.run;
   exec_static /etc/nginx/ffmpeg2.run;
   exec_static /etc/nginx/ffmpeg3.run;
   exec_static /etc/nginx/ffmpeg4.run;


   access_log /var/log/nginx/rtmp_access.log;
 }
}


Где в ffmprg1.run скрипт, который забирет поток с камер и кладет в этот же сервер в порт 1935, после чего nginx уже транслирует клиенту
источник

Y

Yuri in nginx_ru
Полагаю, что тебе тоже подойдет. Но в твоем случае ffmpeg должен забрать mp4 и сделать ему -c copy -f flv rtmp://твой-адрес-nginx:1935/cam/stream1 например
источник

dn

dev null in nginx_ru
дебаг включил
ничего особого не увидел
то есть параллельно должен ещё и ffmpeg работать, чтобы файл в стрим превратить?
источник

dn

dev null in nginx_ru
просто оно так то работает, но блин задержка эта
щас почитаю про
источник

dn

dev null in nginx_ru
live on;
 hls on;
 hls_fragment 5s;
 dash on;
источник

dn

dev null in nginx_ru
вот это
источник

dn

dev null in nginx_ru
может nginx буфферизирует как то с запасом
источник

Y

Yuri in nginx_ru
ну смотри… по идее, если ты хочешь просто статический mp4 отдать в плеер в браузере - можно без rtmp его по обычному http отдавать. Тогда просто делаем псевдостриминг. https://nginx.org/ru/docs/http/ngx_http_mp4_module.html
источник

D

Denis in nginx_ru
dev null
может nginx буфферизирует как то с запасом
Модуль просто очень "качественный"
источник

Y

Yuri in nginx_ru
А если тебе надо отдавать именно RTMP (что требуется достаочно редко), то тогда мало того, что надо в nginx вкомпилить rtmp-модуль, но и создать конфиг (мой пример выше), но и каким-то образом на этот RTMP подать поток.
источник