直播服务器

Published: 27 Jul 2020 Category: live

一、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