1. Install nginx

su
mkdir /usr/local/nginx
cd /usr/local/nginx
apt-get install libssl-dev
tar xvf nginx-http-flv-module-1.2.7.tar.gz
tar xvf nginx-1.17.5.tar.gz
cd nginx-1.17.5
./configure --with-http_ssl_module --add-module=../nginx-http-flv-module-1.2.7
make && make install

2. Edit  nginx.conf

cp nginx-http-flv-module-1.2.7/test/nginx.conf /usr/local/nginx/conf/

worker_processes  1;

error_log  logs/error.log debug;

events {
worker_connections 1024;
} rtmp {
server {
listen 1935; application myapp {
live on; #record keyframes;
#record_path /tmp;
#record_max_size 128K;
#record_interval 30s;
#record_suffix .this.is.flv; #on_publish http://localhost:8080/publish;
#on_play http://localhost:8080/play;
#on_record_done http://localhost:8080/record_done;
}
}
} http {
server {
listen 8002; location /live{
flv_live on;
} location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
} location /stat.xsl {
root /usr/local/nginx/nginx-http-flv-module-1.2.7/;
} location /control {
rtmp_control all;
} #location /publish {
# return 201;
#} #location /play {
# return 202;
#} #location /record_done {
# return 203;
#} location /rtmp-publisher {
root /usr/local/nginx/nginx-http-flv-module-1.2.7/test;
} location / {
root /usr/local/nginx/nginx-http-flv-module-1.2.7/test/www;
}
}
}

Reference example:

Example

Assume that listen directive specified in http block is:

http {
...
server {
listen 8080; #not default port 80
... location /live {
flv_live on;
}
}
} And listen directive specified in rtmp block is: rtmp {
...
server {
listen 1985; #not default port 1935
... application myapp {
live on;
}
}
}

3. Startup nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#ps -ef|grep nginx
#kill -TERM 2132 or kill -INT 2132
#pkill -9 nginx
#./nginx -t
#./nginx -s reload

4. push rtmp stream

ffmpeg -re -i source.200kbps.768x320.flv -c copy -f flv rtmp://127.0.0.1:1935/myapp/mystream

5. player
rtmp://localhost:1935/myapp/mystream

http://localhost:8002/live?port=1935&app=myapp&stream=mystream

6. Other optimized configuration

worker_processes  10;
events {
worker_connections 10240;
}
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_size 1m;
server{
listen 9000;
server_name 127.0.0.1;
application myapp{
live on;
gop_cache on;
}
application hls{
live on;
hls on;
hls_path /usr/local/nginx/html/hls;
}
application dash{
live on;
dash on;
dash_path /usr/local/nginx/html/dash;
} }
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8002;
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';
}
location /hls{
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /usr/local/nginx/html/hls;
add_header 'Cache-Control' 'no-cache';
}
location /dash {
root /usr/local/nginx/html/dash;
add_header 'Cache-Control' 'no-cache';
} location /stat {
#configuration of push & pull status
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/nginx-http-flv-module-1.2.7;
} location /control {
rtmp_control all; #configuration of control module of rtmp
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} }

rtmp

rtmp://example.com[:port]/myapp/mystream

hls
http://example.com[:port]/dir/streamname.m3u8

dash
http://example.com[:port]/dir/streamname.mpd

7. Reference design:

https://github.com/winshining/nginx-http-flv-module

https://blog.csdn.net/caowenjing123/article/details/94623466

Simple Live System Using Nginx的更多相关文章

  1. Building simple plug-ins system for ASP.NET Core(转)

    Recently I built plug-ins support to my TemperatureStation IoT solution web site. The code for .NET ...

  2. Simple GB28181 System

    I. Deployment  / Architecture Block Diagram II. Resources Used 1. freeswitch —— sip server and media ...

  3. 使用metricbeat监控system和nginx

    下载并解压缩metricbeat metricbeat.yml配置文件设置: setup.kibana: host: "192.168.75.21:5601" output.ela ...

  4. Simple File System

    This is my operating system class design. scanner.h #include<string> using namespace std; #pra ...

  5. Artix-7 50T FPGA试用笔记之Create a simple MicroBlaze System

    前言:之前笔者的试用博文提到安富利这块板子非常适合MicroBlaze开发,同时网上关于MicroBlaze的资料非常少(或含糊不清),没有一篇能完整介绍VIVADO SDK的设计流程,所以笔者带来这 ...

  6. GB28181 To RTMP/HLS/HTTP-FLV/DASH Gateway

    I. Deployment  / Architecture Block Diagram II. Resources Used 1. freeswitch —— sip server https://f ...

  7. Nginx - Additional Modules, Content and Encoding

    The following set of modules provides functionalities having an effect on the contents served to the ...

  8. CentOS7安装和配置Nginx(https)

    安装Nginx下载安装包# wget http://nginx.org/download/nginx-1.11.7.tar.gz# tar -zxvf nginx-1.11.7.tar.gz# cd ...

  9. centos7 设置nginx和php开机自启动

    nginx开机自启动 首先我是源码安装的,需要手动建立nginx.service服务文件 cd /lib/systemd/system touch nginx.service nginx.servic ...

随机推荐

  1. 2017乌鲁木齐网络赛 J题 Our Journey of Dalian Ends ( 最小费用最大流 )

    题目链接 题意 : 给出一副图,大连是起点,终点是西安,要求你求出从起点到终点且经过中转点上海的最小花费是多少? 分析 : 最短路是最小费用最大流的一个特例,所以有些包含中转限制或者经过点次数有限制的 ...

  2. SpringCloud 教程 (三)高可用的服务注册中心

    一.准备工作 Eureka can be made even more resilient and available by running multiple instances and asking ...

  3. which statement is true for the class java.util.ArrayList?

    A.集合中的元素是有序的   对 B.集合被保证为不可变的  错 C.集合中的元素被保证为唯一的  错  有序的 所以不唯一 D.集合中的元素使用一个唯一的键来存取   错   没有键 E.集合中的元 ...

  4. 大数据笔记(八)——Mapreduce的高级特性(A)

    一.序列化 类似于Java的序列化:将对象——>文件 如果一个类实现了Serializable接口,这个类的对象就可以输出为文件 同理,如果一个类实现了的Hadoop的序列化机制(接口:Writ ...

  5. EasyUI combotree 设置节点折叠和叶子节点循环展开的BUG

    树实体 public class Combotree { public string id { get; set; } public string text { get; set; } public ...

  6. movable-view组件

    movable-view组件:可以移动方块 movable-view组件必须是movable-area的直接子元素,才可以进行操作,才可以移动方块 movable-view组件的属性: directi ...

  7. Netflow elasticflow

    http://itfish.net/article/27660.html https://github.com/robcowart/elastiflow/tree/master

  8. 关于MonoBehaviour的单例通用规则

    长久以来,对于基于MonoBehaviour的单例总是心有梗结,总觉得用得很忐忑,今天,终于有时间思考和总结了下,理清了想通了.代码和注释如下: 其中GameLogic是我们自己的控制游戏生命周期的管 ...

  9. JDBC 查询mysql数据库比客户端工具慢的解决办法

    在URL链接参数中配置rewriteBatchedStatements.useServerPrepStmts为true url="jdbc:mysql://****/dbName?useSS ...

  10. SynchronousQueue 源码分析

    SynchronousQueue SynchronousQueue 能解决什么问题?什么时候使用 SynchronousQueue? 1)SynchronousQueue 没有任何内部容量. 2)Sy ...