`
redstarofsleep
  • 浏览: 442226 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

 
阅读更多

博客已搬至CSDN

最新内容请访问: http://blog.csdn.net/redstarofsleep/article/details/45092147

 

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

这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)

从安装开始

Nginx的安装参照我之前的这个: http://redstarofsleep.iteye.com/blog/2010391

不同的是在configure的时候需要增加nginx-rtmp-module的支持,下载好nginx-rtmp-module后解压,然后nginx安装时增加这个模块(--add-module),其它都是一样的.

 

    ./configure --prefix=/usr/local/nginx --with-pcre=/home/user/pcre/pcre-8.32 --with-zlib=/home/user/zlib/zlib-1.2.8 --with-openssl=/home/user/openssl/openssl-1.0.1i  --add-module=/home/user/nginx-rtmp-module

FFMPEG的安装参照上一篇: http://redstarofsleep.iteye.com/blog/2122612

 

nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的.

 

安装完成后,打开Nginx的配置文件nginx.conf进行配置

首先在里面加入rtmp的配置

rtmp {
    server {
        listen 1935;

        application myapp {
            live on;
        }
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
        }
    }
}

然后,针对hls,还需要在http里面增加一个location配置

location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
}

 

这是一个最简单,最基础的配置, rtmp监听1935端口,如果是hls的话用hls on开启hls,并且为hls设置一个临时文件目录hls_path /tmp/hls; 其它更高级的配置可以参看nginx-rtmp-module的readme,里面有比较详细的介绍其它的配置,并且它还提供了一个通过JWPlayer在网页上播放的例子.

 

保存完配置文件后,启动nginx,通过netstat -ltn命令可以看到增加了一个1935端口的监听.8080是nginx默认的http监听端口.

# netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN  

然后用ffmpeg推流到nginx:

第一个是推到了上面配置的myapp上:

ffmpeg -re -i "D:\download\film\aqgy\02.mp4" -vcodec libx264 -vprofile baseline -acodec aac
 -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://server:1935/
myapp/test1

第二个推送到hls上:

ffmpeg -re -i "D:\download\film\aqgy\02.mp4" -vcodec libx264 -vprofile baseline -acodec aac
 -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://ip:1935/
hls/test2

现在我们的流媒体服务器有两个实时流了,一个是rtmp的,另一个是hls的,用流媒体播放器播放一下,流媒体播放器可以用vlc也可以用ffmpeg带的ffplay.手机也是可以播放的.

 

上面这两个流的地址分别是:

第一个就是推送的地址: rtmp://serverIp:1935/myapp/test1

第二个是HTTP地址: http://serverIp:8080/hls/test2.m3u8

 

最后贴上一段对于HLS这个比较特殊的流媒体协议的解释:

       (这段解释来自: http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html)

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

 

转载请注明出处

 

 

  • 大小: 15.2 KB
2
0
分享到:
评论
1 楼 cbo365 2016-11-17  
叁陆伍视讯公司的网络摄像机支持RTMP协议,可自定义流媒体服务器地址,填入nginx rtmp服务器地址保存后即可不间断推流,不依赖任何外接设备,编码格式H.264+AAC;http://www.cctv-cbo.com

相关推荐

    ffmpeg+nginx+nginx-rtmp-module搭建个人直播平台

    ffmpeg+nginx+nginx-rtmp-module搭建个人直播平台。 使用说明(ffmpeg+nginx+rtmp-module已经整合,支持HTTP,具体配置查看conf/nginx.conf): 1.解压后,运行nginx_start.bat。(查看监控状态 ...

    Windows下一站式搭建ffmpeg推流+nginx-http-flv-module直播拉流+FLV.js播放环境.rar

    1、在Windows系统下,搭建ffmpeg推流+nginx-http-flv-module直播拉流+FLV.js播放环境,所需依赖相关资源文件。 2、适合初学、研究、验证视频直播部署方案的相关技术人员。

    Nginx-rtmp流媒体服务器搭建+ffmpeg推流.pdf

    在开始搭建流媒体服务器之前,我们需要准备五个软件包,分别是Nginx、zlib、pcre、openssl和nginx-rtmp-module。这些软件包可以从官方网站下载,也可以从百度网盘下载。 三、Nginx编译安装 Nginx是流媒体服务器的...

    ffmpeg+nginx-rtmp-module+flv监控视频web展示

    FFmpeg、Nginx-RTMP-Module 和 FLV 监控视频Web展示是一个整合了实时流媒体处理、传输和播放的技术方案。这个方案适用于在Web端实现监控视频的实时展示,尤其对于需要构建远程监控系统或者直播平台的场景非常实用。...

    nginx + nginx-http-flv-module-1.2.9

    Nginx 是一个高性能的 Web 和反向代理服务器,而 nginx-http-flv-module 是 Nginx 的一个扩展模块,专门用于支持实时流媒体(RTMP)和FLV格式的视频流。让我们深入探讨这个组合的相关知识点。 1. **Nginx 概述** ...

    nginx-rtmp模块源码包nginx-rtmp-module-master

    这个源码包 "nginx-rtmp-module-master" 包含了 Nginx-RTMP 模块的源代码,对于运维人员来说,了解并掌握其工作原理和配置方法对于搭建和维护实时流媒体服务器至关重要。 **一、Nginx 简介** Nginx 是一款高性能的 ...

    nginx-1.7.11.3-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x

    标题中的"nginx-1.7.11.3-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x"揭示了这个压缩包包含了几个关键的组件,它们都是用于搭建和优化流媒体服务器的工具。这里我们将深入探讨这些组件的作用和它们在IT...

    nignx+nginx-http-flv-module-master+ffmpeg

    在IT行业中,实时视频流服务已经成为互联网应用的重要组成部分,尤其在在线教育、远程会议、游戏...总之,“nignx+nginx-http-flv-module-master+ffmpeg”这套组合为搭建高效稳定的实时视频流服务提供了坚实的基础。

    nginx-rtmp-module-1.2.1.tar.gz

    Nginx RTMP 模块是由阿里的 Ivan Shapovalov 开发的,它使得 Nginx 服务器能够处理 RTMP 协议的流,包括接收来自流媒体服务器或客户端的推送流,以及向客户端推送流。这个模块支持 HLS (HTTP Live Streaming) 和 ...

    docker-nginx-rtmp 从源代码安装 NGINX、nginx-rtmp-module 和 FFmpeg XSLT

    docker pull alfg/nginx-rtmp docker run -it -p 1935:1935 -p 8080:80 --rm alfg/nginx-rtmp 或者 从源代码构建和运行容器: docker build -t nginx-rtmp . docker run -it -p 1935:1935 -p 8080:80 --rm nginx-...

    nginx-rtmp-module

    【Nginx-RTMP-Module详解:搭建流媒体服务器实现直播】 在现代互联网中,实时流媒体服务已经成为在线内容传播的重要方式,特别是在直播领域。Nginx 是一款高性能、轻量级的 Web 服务器/反向代理服务器,而 Nginx-...

    nginx-rtmp-module-master.zip

    Nginx RTMP 模块是 Nginx 服务器的一个扩展,专门用于处理 Real-Time Messaging Protocol (RTMP) 的流媒体内容。RTMP 是一种广泛应用于在线视频直播的技术,由 Adobe Systems 开发,用于在服务器和客户端之间传输...

    nginx(已经配置好了nginx-rtmp-module)+VLC(可播放rtmp)+ffmpeng

    本教程将详细介绍如何利用Nginx(已配置了nginx-rtmp-module)、VLC和ffmpeg来搭建一个RTMP直播系统,支持海康威视等监控设备的视频流接入。 【nginx-rtmp-module】是Nginx的一个扩展模块,专门用于处理RTMP协议的...

    nginx-1.24.0-Gryphon+rtmpModule+Native HLS Playback插件+ffmpeg-x

    Nginx RTMP Module 提供了发布、播放、录制、重定向等操作,是搭建基于RTMP的流媒体服务器的关键组件。 **Native HLS Playback 插件** HLS(HTTP Live Streaming)是由Apple开发的一种流媒体协议,适用于HTTP传输...

    用FFmpeg+nginx+rtmp搭建环境实现推流.docx

    FFmpeg+nginx+rtmp搭建环境实现推流 FFmpeg、nginx、rtmp三者结合可以实现一个强大且高效的流媒体服务器,下面是它们的详细介绍和搭建过程。 FFmpeg FFmpeg是一款功能强大的开源命令行工具,能够处理视频和音频...

    Linux环境傻瓜式nginx+rtmp+ffmpeg套餐安装详解(获取拉流人数)

    本文旨在提供一套完整的Linux环境下Nginx、RTMP和FFmpeg的安装及配置指南,帮助读者快速搭建功能强大的流媒体服务器。文章不仅涵盖了基本概念介绍,还深入解析了各组件的具体安装步骤和配置方法。此外,还将介绍如何...

    nginx-rtmp-module搭建RTMP+HLS流媒体服务器的自动编译脚本

    inux平台下使用nginx与nginx-rtmp-module搭建RTMP+HLS流媒体服务器的详细操作步骤在文章(http://blog.csdn.net/liuchen1206/article/details/77771703)中有作介绍,现将资源整合成自动编译部署脚本,节约时间。...

    nginx-rtmp-module-master

    在"nginx-rtmp-module-master"这个压缩包中,包含了该模块的源代码和相关配置文件,使得开发者能够自定义和编译 Nginx 以支持 RTMP 功能。 **RTMP 协议介绍** RTMP 是一种专为音视频数据流设计的网络传输协议,...

    搭建ffmpeg+nginx+yasm 流媒体服务器低延迟,最低延迟两三秒

    搭建ffmpeg+nginx+yasm流媒体服务器低延迟 一、流媒体服务器概念 流媒体服务器是指能够实时地传输和处理视频流的服务器,通常用于直播、监控、在线视频等应用场景中。搭建流媒体服务器需要选择合适的软件和硬件...

Global site tag (gtag.js) - Google Analytics