Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

LLiuHuan/nginx-http-flv-module-docker

Repository files navigation

Introduce

The official image of nginx-http-flv-module is N years ago, so the project needs to get the latest version.

  1. This project uses the latest version of nginx-http-flv-module. The current version is 1.2.11
  2. Both rtmp and http nginx parsing is stream, which can be modified if necessary.

Use

  1. Run container
docker run --name flv -p 1935:1935 -p 8080:80 -itd lliuhuan/nginx-http-flv-module
  1. Using OBS and other software to push streams
Server: rtmp://127.0.0.1:1935/stream
Secret Key: t55

image
3. Play using IINA or other HTTP video playback tools

http://localhost:8080/stream?app=stream&stream=t55

image

RTMP method

Push streaming
# Serve
rtmp://127.0.0.1:1935/[app]
#streamname
t55
Play
http://127.0.0.1:8080/stream?app=stream&stream=[streamname]

HLS method

Push streaming
# Serve
rtmp://127.0.0.1:1935/hls
#streamname
t55
Play
http://localhost:8080/hls/[streamname].m3u8

DASH method

Push streaming
# Serve
rtmp://127.0.0.1:1935/dash
#streamname
t55
Play
http://localhost:8080/dash/[streamname].mpd

Monitoring

http://127.0.0.1:8080/stat

Default Nginx configuration

user root;
worker_processes 1; #运行在 Windows 上时,设置为 1,因为 Windows 不支持 Unix domain socket
#worker_processes auto; #1.3.8 和 1.2.5 以及之后的版本
#worker_cpu_affinity 0001 0010 0100 1000; #只能用于 FreeBSD 和 Linux
#worker_cpu_affinity auto; #1.9.10 以及之后的版本
error_log logs/error.log error;
#如果此模块被编译为动态模块并且要使用与 RTMP 相关的功
#能时,必须指定下面的配置项并且它必须位于 events 配置
#项之前,否则 NGINX 启动时不会加载此模块或者加载失败
#load_module modules/ngx_http_flv_live_module.so;
# error_log /var/log/nginx/error.log notice;
# pid /var/run/nginx.pid;
events {
 worker_connections 4096; ## Default: 1024
}
rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /tmp;
rtmp {
 out_queue 4096;
 out_cork 8;
 max_streams 128;
 timeout 15s;
 drop_idle_publisher 15s;
 log_interval 5s; #log 模块在 access.log 中记录日志的间隔时间,对调试非常有用
 log_size 1m; #log 模块用来记录日志的缓冲区大小
 server {
 listen 1935; # 接受推流的端口号
 chunk_size 8192; # 单一推流数据包的最大容量?
 access_log off;	# 加上这行,取消操作日志
 application stream { # mlive 模块,可以自行更换名字
 live on; # 打开直播
 meta off; # 为了兼容网页前端的 flv.js,设置为 off 可以避免报错
 gop_cache on; # 支持GOP缓存,以减少首屏时间 改为off 延迟较大
 allow play all; # 允许来自任何 ip 的人拉流
 }
 application hls { # hls 模块,可以自行更换名字
 live on;
 hls on;
 hls_path /tmp/hls;
 }
 application dash { # dash 模块,可以自行更换名字
 live on;
 dash on;
 dash_path /tmp/dash;
 }
 }
}
http {
 include mime.types;
 default_type application/octet-stream;
 sendfile on;
 #tcp_nopush on;
 #keepalive_timeout 0;
 keepalive_timeout 65;
 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 # '$status $body_bytes_sent "$http_referer" '
 # '"$http_user_agent" "$http_x_forwarded_for"';
 #access_log logs/access.log main;
 access_log off;	# 加上这行,取消操作日志
 #gzip on;
 server {
 listen 80; # http 服务的端口
 # server_name localhost;
 location / {
 root html;
 index index.html index.htm;
 add_header 'Access-Control-Allow-Origin' '*'; # 允许跨域
 add_header 'Access-Control-Allow-Credentials' 'true';
 }
 location /stream {
 flv_live on; # 打开 http-flv 服务
 chunked_transfer_encoding on; #支持 'Transfer-Encoding: chunked' 方式回复
 add_header 'Access-Control-Allow-Origin' '*'; # 允许跨域
 add_header 'Access-Control-Allow-Credentials' 'true';
 }
 location /hls { # hls 服务 根据需求修改
 types {
 application/vnd.apple.mpegurl m3u8;
 video/mp2t ts;
 }
 root /tmp;
 add_header 'Cache-Control' 'no-cache';
 }
 location /dash { # dash 服务 根据需求修改
 root /tmp;
 add_header 'Cache-Control' 'no-cache';
 }
 location /stat { # 推流播放和录制统计数据的配置 根据需求确定是否开放
 rtmp_stat all;
 rtmp_stat_stylesheet stat.xsl;
 }
 location /stat.xsl {
 root rtmp; #指定 stat.xsl 的位置
 }
 #如果需要 JSON 风格的 stat, 不用指定 stat.xsl
 #但是需要指定一个新的配置项 rtmp_stat_format
 #location /stat {
 # rtmp_stat all;
 # rtmp_stat_format json;
 #}
 location /control {
 rtmp_control all; #rtmp 控制模块的配置
 }
 }
}

Build images by workflow

Automatically execute workflow, build Docker image, and upload Docker Hub when push tag is v*

1. Add secrets in this repo:

  1. Add your Docker account and password in the settings -> secrets
DOCKER_USERNAME is your Docker account
ACCESS_TOKEN is your Docker password

2. Push tag about v*

References

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /