使用Linux+FFmpeg+SRS 搭建流媒体服务器

当前场景  有前端摄像头使用RTSP生产视频流,网页页面需要播放实时视频,以前是采用FFmpeg转码+Nginx的rtmp模块 推送视频直播流。

但目前这种方式前端采用FLASH播放器进行播放已经不适用当前的环境,毕竟Flash在某些浏览器中已经被禁止。

故现在改用FFmpeg+SRS进行流媒体服务器进行视频直播推流,这种方式可以支持H5播放。下面来介绍其操作步骤。

步骤一、

下载SRS源代码并编译  或下载其编译好的SRS 服务。 推荐开源地址   srs: SRS/4.0,Leo,是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT

https://gitee.com/winlinvip/srs.oschina

下载源码,推荐用CentOS7系统

git clone -b 4.0release https://gitee.com/ossrs/srs.git

编译,注意需要切换到srs/trunk目录:

cd srs/trunk
./configure
make

注:一般情况下,播放的地址与网站存在SRS跨域播放问题      可以按下面方案解决此问题  在此之前,千万一定不要执行编译!

#cd srs/trunk
#vi src/app/srs_app_http_stream.cpp
在w->header()->set_content_type("video/x-flv");下一行添加代码
w->header()->set("Access-Control-Allow-Origin","*");
然后直接编译安装SRS


注意:在修改src/app/srs_app_http_stream.cpp之前不要编译srs

步骤二、

启动SRS服务    srs.conf配置如下:

# main config for srs.
# @see full.conf for detail config.

listen              1936;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
daemon              on;
http_api {
    enabled         on;
    listen          1986;
}
http_server {
    enabled         on;
    listen          7001;
    dir             ./objs/nginx/html;
}
stats {
    network         0;
    disk            sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
    hls {
        enabled         off;
    }
    #最小延迟打开,默认是打开的,该选项打开的时候,mr默认关闭。
    min_latency     on;
    #Merged-Read,针对RTMP协议,为了提高性能,SRS对于上行的read使用merged-read,即SRS在读写时一次读取N毫秒的数据
    mr {
        enabled     on;
        #默认350ms,范围[300-2000]
        latency     500;
    }
    mw_latency      100;
    gop_cache       off;
    queue_length    10;
    http_remux {
        enabled     on;
        fast_cache  30;
        mount       [vhost]/[app]/[stream].flv;
        hstrs       off;
    }
}

启动命令如下:

./objs/srs -c conf/srs.conf

步骤三、

使用ffmpeg 进行转码    如前端摄像头地址为:rtsp://48.5.16.5:888/admin      本机IP地址为:192.168.1.1

在命令行运行命令:

/usr/local/ffmpeg/bin/ffmpeg -i  rtsp://48.5.16.5:888/admin  -c:v libx264  -strict -2 -preset ultrafast -acodec aac -s 640*480 -f flv  rtmp://192.168.1.1:1936/live/zhibo1  >/dev/null 2>&1 &

步骤四  访问播放地址

使用HTML5播放器进行播放   播放地址为:http://192.168.1.1:7001/live/zhibo1

其中1936   7001  端口与srs.conf 中的监听端口保持一致。

此致,部署完成。

上一篇:memcached采用的网络模型


下一篇:linux下的目录结构和内容