Как мне следует настроить rtmp-сервер NGINX, чтобы я мог публиковать как поток rtmp, так и hls одновременно

#nginx #http-live-streaming #rtsp #rtmp

#nginx #http-прямая трансляция #rtsp #rtmp

Вопрос:

В настоящее время у меня работает сценарий ffmpeg bash, который извлекает канал RTSP из ленты с живой камерой, а затем публикует его в формате RTM на мой сервер Nginx.

Требования к серверу заключаются в том, что пользователи могут подписываться как на канал RTMP, который публикует сервер Nginx, так и на поток HLS.

Проблема, которую я нахожу, заключается в том, что поток RTMP через некоторое время зависает, хотя поток HLS продолжает работать.

Мне интересно, не потому ли это, что это отдельный процесс, а не тот, который выполняется самим Nginx с помощью его exec команды.

Кроме того, я не настраивал этот сервер, поэтому я понятия не имею, что мне нужно немного изменить конфигурацию.

Вот мои два сценария.

 #!/bin/bash  sleep 1   VID_SOURCE="rtsp://camerastream.com/MediaInput/h264/stream_"  VIDEO_OPTS="-vcodec libx264 -video_size 1280x720 -b:v 2048k"  AUDIO_OPTS="-c:a copy"  VID_OUTPUT="rtmp://localserver:1935/live/livestream"    ffmpeg -rtsp_transport tcp -r 15 -i $VID_SOURCE $VIDEO_OPTS $AUDIO_OPTS -f flv $VID_OUTPUT  

А затем моя конфигурация Nginx

 vents {}  rtmp {   server {   listen 1935;    application live {   live on;   interleave on;   # Turn on HLS  hls on;  hls_path /tmp/hls;  hls_playlist_length 15s;   }  }  }    http {  default_type application/octet-stream;    server {  listen 8080;   location /hls {   # Disable cache  add_header 'Cache-Control' 'no-cache';   # CORS setup  add_header 'Access-Control-Allow-Origin' '*' always;  add_header 'Access-Control-Expose-Headers' 'Content-Length';   # allow CORS preflight requests  if ($request_method = 'OPTIONS') {  add_header 'Access-Control-Allow-Origin' '*';  add_header 'Access-Control-Max-Age' 1728000;  add_header 'Content-Type' 'text/plain charset=UTF-8';  add_header 'Content-Length' 0;  return 204;  }   types {  application/dash xml mpd;  application/vnd.apple.mpegurl m3u8;  video/mp2t ts;  }   root /tmp/;   }  } }  

Цель состоит в том, чтобы иметь один сервер, на котором подписчики могли бы просматривать канал rtmp или канал HLS