直播服务器
一、SRS(Simple rtmp server)
https://github.com/ossrs/srs
SRS不仅能当服务器,还可以导出srs-librtmp,用c++来集成这个sdk,能做到很多事情。
分发
SRS支持HLS/RTMP两种成熟而且广泛应用的流媒体分发方式。
分发HLS: https://github.com/ossrs/srs/wiki/v1_CN_DeliveryHLS 分发RTMP:https://github.com/ossrs/srs/wiki/v1_CN_DeliveryRTMP
推流
可以用ffmpeg轻松做到: https://github.com/ossrs/srs/wiki/v1_CN_SampleRTMP
for((;;)); do \
./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768x320.flv \
-vcodec copy -acodec copy \
-f flv -y rtmp://192.168.1.170/live/livestream; \
sleep 1; \
done
或使用FMLE推流:
FMS URL: rtmp://192.168.1.170/live
Stream: livestream
如果要在代码中实现,可以基于librtmp,或者srs-librtmp.
观看RTMP流
可以使用VLC观看。
或者使用在线srs播放器:http://ossrs.net/srs.release/trunk/research/players/srs_player.html 基于Flash,可以播放本机的rtmp地址。
二、基于nginx的rtmp直播服务器(nginx-rtmp-module实现)
https://www.cnblogs.com/zhangmingda/p/12638985.html
简单来说,就是在原有的nginx上增加一个rtmp依赖库。并在nginx.conf中配置:
rtmp {
server {
listen 1935;
chunk_size 4000;
application vod {
play /usr/share/nginx/html/vod/flvs/;#点播媒体存放目录
}
application live {
live on;
}
#HLS直播配置
application hls {
live on;
hls on;
hls_path /usr/share/nginx/html/hls;#视频流存放地址
hls_fragment 5s;
hls_playlist_length 15s;
hls_continuous on; #连续模式。
hls_cleanup on; #对多余的切片进行删除。
hls_nested on; #嵌套模式。
}
}
}
https://www.jianshu.com/p/f4508c4e6a90?utm_campaign=haruki
性能对比
srs和nginx-rtmp没有太大的性能差异: https://github.com/ossrs/srs/wiki/v1_CN_Performance