- 学习内容
- 使用SRS手动搭建流媒体服务器。
- SRS相关优化配。
- Nginx安装及相关SRS配置
- rtmp 推流,http拉流
- 优秀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安装之后的文件结构大致为:
- 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-enabled下
- 程序文件在/usr/sbin/nginx
- 日志放在了/var/log/nginx中
- 并已经在/etc/init.d/下创建了启动脚本nginx
- 默认的虚拟主机的目录设置在了/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自动创建