mirror of
https://github.com/zotanmew/nginx-rtmp-module.git
synced 2024-06-29 08:18:58 +02:00
157 lines
3.3 KiB
Plaintext
157 lines
3.3 KiB
Plaintext
== nginx-rtmp-module ==
|
|
|
|
NGINX-based RTMP server
|
|
|
|
* Live streaming of video/audio
|
|
|
|
* Stream relay support for distributed
|
|
streaming: push & pull models
|
|
|
|
* Recording published streams in FLV file
|
|
|
|
* H264 support
|
|
|
|
* HTTP callbacks on publish/play/record
|
|
|
|
* Advanced buffering techniques
|
|
to keep memory allocations at a minimum
|
|
level for faster streaming and low
|
|
memory footprint
|
|
|
|
* Works with Flash RTMP clients as well as
|
|
ffmpeg/rtmpdump/flvstreamer etc
|
|
(see examples in test/ subdir)
|
|
|
|
* Statistics in XML/XSL in machine- & human-
|
|
readable form
|
|
|
|
|
|
Build:
|
|
|
|
cd to NGINX source directory & run this:
|
|
|
|
./configure --add-module=<path-to-nginx-rtmp-module>
|
|
make
|
|
make install
|
|
|
|
|
|
Note the module does not share data between workers
|
|
and only works in one-worker mode.
|
|
|
|
|
|
RTMP URL format:
|
|
|
|
rtmp://rtmp.example.com/<app>[/<name>]
|
|
|
|
<app> - should match one of application {}
|
|
blocks in config
|
|
<name> - interpreted by each application
|
|
can be empty
|
|
|
|
|
|
Example nginx.conf:
|
|
|
|
rtmp {
|
|
|
|
server {
|
|
|
|
listen 1935;
|
|
|
|
chunk_size 4000;
|
|
|
|
# TV mode: one publisher, many subscribers
|
|
application mytv {
|
|
|
|
# enable live streaming
|
|
live on;
|
|
|
|
# record first 1K of stream
|
|
record all;
|
|
record_path /tmp/av;
|
|
record_max_size 1K;
|
|
|
|
# publish only from localhost
|
|
allow publish 127.0.0.1;
|
|
deny publish all;
|
|
|
|
#allow play all;
|
|
}
|
|
|
|
application mypush {
|
|
live on;
|
|
|
|
# Every stream published here
|
|
# is automatically pushed to
|
|
# these two machines
|
|
push rtmp1.example.com;
|
|
push rtmp2.example.com:1934;
|
|
}
|
|
|
|
application mypull {
|
|
live on;
|
|
|
|
# Pull all streams from remote machine
|
|
# and play locally
|
|
pull rtmp3.example.com;
|
|
}
|
|
|
|
# Many publishers, many subscribers
|
|
# no checks, no recording
|
|
application videochat {
|
|
|
|
live on;
|
|
|
|
# The following notifications receive all
|
|
# the session variables as well as
|
|
# particular call arguments in HTTP POST
|
|
# request
|
|
|
|
# Make HTTP request & use HTTP retcode
|
|
# to decide whether to allow publishing
|
|
# from this connection or not
|
|
on_publish http://localhost:8080/publish;
|
|
|
|
# Same with playing
|
|
on_play http://localhost:8080/play;
|
|
|
|
# record 10 video keyframes (no audio) every 2 minutes
|
|
record keyframes;
|
|
record_path /tmp/vc;
|
|
record_max_frames 10;
|
|
record_interval 2m;
|
|
|
|
# Async notify about an flv recorded
|
|
on_record_done http://localhost:8080/record_done;
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
# HTTP can be used for accessing RTMP stats
|
|
http {
|
|
|
|
server {
|
|
|
|
listen 8080;
|
|
|
|
# This URL provides RTMP statistics in XML
|
|
location /stat {
|
|
rtmp_stat all;
|
|
|
|
# Use this stylesheet to view XML as web page
|
|
# in browser
|
|
rtmp_stat_stylesheet stat.xsl;
|
|
}
|
|
|
|
location /stat.xsl {
|
|
# XML stylesheet to view RTMP stats.
|
|
# Copy stat.xsl wherever you want
|
|
# and put the full directory path here
|
|
root /path/to/stat.xsl/;
|
|
}
|
|
|
|
}
|
|
}
|
|
|