SRS+Nginx+Ubuntu16.4搭建流媒体服务器

  • 学习内容
  1. 使用SRS手动搭建流媒体服务器。
  2. SRS相关优化配。
  3. Nginx安装及相关SRS配置
  4. rtmp 推流,http拉流
  5. 优秀SRS相关博客推荐
  • 使用SRS手动搭建流媒体服务器
    第一步: 下载开源srs流媒体服务器,在本地任意目录下分别执行以下命令,此过程需要等待很久,或者前往该库自行下载解压到本地任意目录下。
git clone https://github.com/ossrs/srs

修改默认配置文件,并进行安装。

vim srs/trunk/conf/srs.conf
修改max_connections    1000;为max_connections     100;
注意:若不修改此值后面编译中会报错
cd srs/trunk
./configure --osx
注意:在mac 系统中./configure 时需要添加  --osx
make

等待安装完毕即可。
第二步:修改配置文件,启动流媒体服务器

修改配置:
> vim srs/trunk/conf/hls.conf

vim srs/trunk/conf/hls.conf
修改hls_path的路径,默认路径为./objs/nginx/html,这里修改为/root/ossrs/hls_path(自定义)。

通过nginx配置访问/root/ossrs/hls_path

hls_path的作用:直播中会将m3u8文件和ts文件输出hls_path,有了m3u8文件就可以在启动端播放了。
m3u8是一个包含许多ts视频路径和格式说明集合的文本文件,ts是一种视频格式,是直播中一个小的视频切片。

m3u8播放地址为:http://47.98.37.74/live/livestream.m3u8,
47.98.37.74为服务器ip,80为tomcat服务器端口,live为虚拟路径可随意自定义SRS会/root/ossrs/hls_path下自动创建,livestream为自定义m3u8文件名

对于web服务器而言livestream.m3u8只是一个文件,我们将hls_path设置到web服务器能够访问到即可。

启动srs服务器

./objs/srs -c conf/hls.conf
  • SRS相关优化配

vim srs/trunk/conf/hls.conf

listen              1935;
max_connections     1000;

http_server {
#是否启用HTTP流媒体服务,http_server必须存在 ,1935端口需要配置防火墙放行
    enabled         off;
#    listen          80;
#    dir             /root/ossrs/hls_path;
}

vhost __defaultVhost__ {
    #最小延迟打开,默认是打开的,该选项打开的时候,mr默认关闭。
    min_latency     on;

    #Merged-Read,针对RTMP协议,为了提高性能,SRS对于上行的read使用merged-read,即SRS在读写时一次读取N毫秒的数据
    mr {
        enabled     off;
        #默认350ms,范围[300-2000]
        #latency     350;
    }

    #Merged-Write,SRS永远使用Merged-Write,即一次发送N毫秒的包给客户端。这个算法可以将RTMP下行的效率提升5倍左右,范围[350-1800]
    mw_latency      100;
    #enabled         on;
    #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#gop-cache
    gop_cache       off;
    #配置直播队列的长度,服务器会将数据放在直播队列中,如果超过这个长度就清空到最后一个I帧
    #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#%E7%B4%AF%E7%A7%AF%E5%BB%B6%E8%BF%9F
    #queue_length    10;

    #http_flv配置
    http_remux {
        enabled     on;
        mount [vhost]/[app]/[stream].flv;
        hstrs   on;
    }

    hls {
        enabled         on;
        hls_path        /root/ossrs/hls_path;
        hls_fragment    10;
        hls_window      60;
    }
}

相关优秀SRS博客推荐
SRS 直播系统使用中发现延迟过大
HLS协议解析(特优质文章)
关于SRS3配置文件详细参数说明(特优质文章)

  • Nginx安装及相关SRS配置
    nginx安装

更新

apt-get update

安装nginx

apt-get install nginx

Ubuntu安装之后的文件结构大致为:

  1. 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-enabled下
  2. 程序文件在/usr/sbin/nginx
  3. 日志放在了/var/log/nginx中
  4. 并已经在/etc/init.d/下创建了启动脚本nginx
  5. 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-enabled里的配置)

启动重载

nginx -s reload

nginx相关配置文件修改

修改nginx.conf配置文件,优化配置

vim /etc/nginx/nginx.conf
# user默认www改为root,否者nginx无权限访问/root目录下资源文件
user root;
# no of cpu * 2
worker_processes 4;
worker_rlimit_nofile 25000;
pid /run/nginx.pid;

events {
        use epoll;
        #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
        worker_connections 20000;
        multi_accept on;
}

http {

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
        #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;

        #连接超时时间
        keepalive_requests 100;
        #keepalive_timeout 65;
        keepalive_timeout 0;

        types_hash_max_size 2048;
        open_file_cache max=100;

        #设定请求缓冲
        server_names_hash_bucket_size  128;
        client_header_buffer_size   32K;
        large_client_header_buffers  4 32k;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        #开启gzip压缩,降低传输流量
        gzip  on;
        gzip_min_length    1k;
        gzip_buffers    4 16k;
        gzip_http_version  1.1;
        gzip_comp_level  2;
        gzip_types  text/plain application/x-javascript text/css  application/xml;
        gzip_vary on;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

nginx请求优化文章推荐
如何优化NGINX以处理每分钟100K+请求(10万/min)
Nginx高并发配置思路(轻松应对1万并发量)

将 /etc/nginx/sites-enabled/ 下默认文件重命名为http并编辑

server {
    listen 80;
    server_name www.xypsp.com;

    location ~* \.m3u8{
       root /root/ossrs/hls_path;
       add_header Access-Control-Allow-Origin *;
    }

    location ~* \.ts{
       root /root/ossrs/hls_path;
       add_header Access-Control-Allow-Origin *;
    }

}

注意 root 为SRS中配置的hls_path路径/root/ossrs/hls_path

nginx -s reload
  • rtmp 推流,http拉流

推流地址为: rtmp://47.98.37.74:1935/live/4K.m3u
拉流地址为:
http://www.xypsp.com/live/4K.m3u8
或者通过服务器ip
http://47.98.37.74/live/4K.m3u8
live/4K.m3u8 皆为自定义SRS自动创建

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容