nginx搭建rtmp协议流媒体服务器

来源:互联网 发布:用友软件操作流程 编辑:程序博客网 时间:2024/06/06 21:41

前几篇是利用ffmpeg实现录屏数据的推流和流媒体的播放,但一个前提是要搭建流媒体服务器。

开源的而流媒体服务器很多,本人初次使用,搭建了几款可以实现点播,但无法实现多路直播;后来用nginx搭建,发现效果、功能都不错,重点是搭建十分简单。

以下都是抄的:

Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.

这个流媒体服务器可以支持RTMPHLS(Live Http Stream)。

虽然我不用HLS,但是有必要了解一下:

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

即:hls实质还是点播,他把完整的流媒体做了ts切片,客户端下载这些小切片是很快的,然后不断下载不断播放,这就是所谓的伪直播。


开始搭建Nginx

一、从github下载nginx-rtmp-module-master并解压,如我解压在/works/nginx-rtmp-module-master/

二、从github或官网下载nginx-1.10.2(用最新版本即可),configure的时候需要增加nginx-rtmp-module的支持(--add-module)

     ./configure ----add-module=/works/nginx-rtmp-module-master  如需其他模块可自行安装比如zlib ssl我之前已经安装,我在fedora22上直接编译通过

     make&make install 之后,会在/usr/local/下生产nginx目录

三、配置nginx.conf,主要是增加rtmp的配 置

     进入/usr/local/nginx下

    vi conf/ngnix.conf

增加rtmp的支持:

1
      2 #user  nobody;
      3 worker_processes  10;
      4
      5 #error_log  logs/error.log;
      6 #error_log  logs/error.log  notice;
      7 #error_log  logs/error.log  info;
      8
      9 #pid        logs/nginx.pid;
     10
     11
     12 events {
     13     worker_connections  1024;
     14 }
     15
     16 rtmp_auto_push on;
     17 rtmp_auto_push_reconnect 1s;
     18
     19 rtmp {
     20     server
     21     {
     22         listen 8811;
     23         application myapp
     24         {
     25             live on;
     26         }
     27         access_log logs/rtmp_access.log;
     28
     29     }
     30 }

     31
     32
     33 http {............

即是增加对rtmp的支持,另外可增加对hls的支持;

四、运行及重启nginx

     运行 /usr/local/nginx/sbin/nginx

    重启/usr/local/nginx/sbin/ngixn -s reload


五:测试

      ffmpeg命令推流:./ffmpeg  -re -i /root/test.flv -vcodec copy -f flv "rtmp://127.0.0.1:8811/myapp/test1"

                                       -re是按时间排序进行推流,不加此参数ffmpeg会一次性进行推流,流媒体服务器无法承受

                                      -f flv指定推流格式

   客户端播放:用ffplay:

                              ffpaly rtmp://192.168.80.31:8811/myapp/test1  进行播放,也可以用vlc播放器进行播放。





   



0 0
原创粉丝点击