nginx-rtmp-mudule RTMP 是一款优秀的Car-eye-http-flv-module 是在nginx-rtmp-mudule RTMP基础上修改的流媒体服务器,除了支持flash播放器外,还支持现在常见的播放器。完美实现了HTTP方式的FLV直播功能。

本文简单介绍下该模块的主要功能和使用:

功能

  • nginx-rtmp-module提供的所有功能。

  • 基于HTTP协议的FLV直播流播放。

  • GOP缓存,降低播放延迟 (H.264视频和AAC音频)。

  • 支持Transfer-Encoding: chunked方式的HTTP回复。

  • rtmp配置的server块中可以省略listen配置项。

  • 支持虚拟主机。

支持的系统

  • Linux(推荐)/FreeBSD/MacOS/Windows(受限)。

支持的播放器

  • VLC (RTMP & HTTP-FLV)/OBS (RTMP & HTTP-FLV)/JW Player (RTMP)/flv.js (HTTP-FLV).

依赖

  • 在类Unix系统上,需要GNU make,用于调用编译器来编译软件。

  • 在类Unix系统上,需要GCC/在Windows上,需要MSVC,用于编译软件。

  • 在类Unix系统上,需要GDB,用于调试软件(可选)。

  • FFmpeg,用于发布媒体流。

  • VLC播放器(推荐),用于播放媒体流。

  • 如果NGINX要支持正则表达式,需要PCRE库。

  • 如果NGINX要支持加密访问,需要OpenSSL库。

  • 如果NGINX要支持压缩,需要zlib库。

创建

在Windows上

编译步骤请参考Building nginx on the Win32 platform with Visual C,不要忘了在Run configure script步骤中添加--add-module=/path/to/nginx-http-flv-module

在类Unix系统上

下载NGINX和nginx-http-flv-module。

将它们解压到某一路径。

打开NGINX的源代码路径并执行:

将模块编译进NGINX

./configure --add-module=/path/to/nginx-http-flv-module
make
make install

将模块编译为动态模块

./configure --add-dynamic-module=/path/to/nginx-http-flv-module
make
make install

注意

如果将模块编译为动态模块,那么NGINX的版本号必须大于或者等于1.9.11。

发布

ffmpeg -re -i example.mp4 -vcodec copy -acodec copy -f flv rtmp://example.com[:port]/appname/streamname

appname用于匹配rtmp配置块中的application块(更多详情见下文)。

streamname可以随意指定。

RTMP默认端口为1935,如果要使用其他端口,必须指定:port

播放(HTTP)

http://example.com[:port]/dir?[port=xxx&]app=myapp&stream=mystream

参数dir用于匹配http配置块中的location块(更多详情见下文)。

HTTP默认端口为80, 如果使用了其他端口,必须指定:port

RTMP默认端口为1935,如果使用了其他端口,必须指定port=xxx

参数app用来匹配application块,但是如果请求的app出现在多个server块中,并且这些server块有相同的地址和端口配置,那么还需要用匹配主机名的server_name配置项来区分请求的是哪个application块,否则,将匹配第一个application块。

参数stream用来匹配发布流的streamname。

例子

假设在http配置块中的listen配置项是:

http {...server {listen 8080; #不是默认的80端口...location /live {flv_live on;}}
}

rtmp配置块中的listen配置项是:

rtmp {...server {listen 1985; #不是默认的1935端口...application myapp {live on;}}
}

那么基于HTTP的播放url是:

http://example.com:8080/live?port=1985&app=myapp&stream=mystream

注意

如果使用的是HTTP版本1.1(HTTP/1.1),chunked_transfer_encoding配置项默认是打开的。

由于一些播放器不支持HTTP块传输,这种情况下最好在指定了flv_live on;的location中指定chunked_transfer_encoding off,否则播放会失败。

nginx.conf实例

注意

配置项rtmp_auto_pushrtmp_auto_push_reconnectrtmp_socket_dir在Windows上不起作用,除了Windows 10 17063以及后续版本之外,因为多进程模式的relay需要Unix domain socket的支持,详情请参考Unix domain socket on Windows 10。

worker_processes  4; #运行在Windows上时,设置为1,因为Windows不支持Unix domain socket
worker_cpu_affinity  0001 0010 0100 1000; #运行在Windows上时,省略此配置项error_log logs/error.log error;#如果此模块被编译为动态模块并且要使用与RTMP相关的功
#能时,必须指定下面的配置项并且它必须位于events配置
#项之前,否则NGINX启动时不会加载此模块或者加载失败
#load_module modules/ngx_rtmp_module.so;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;keepalive_timeout  65;server {listen       80;location / {root   /var/www;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}location /live {flv_live on; #打开HTTP播放FLV直播流功能chunked_transfer_encoding on; #支持‘Transfer-Encoding: chunked‘方式回复add_header ‘Access-Control-Allow-Origin‘ ‘*‘; #添加额外的HTTP头add_header ‘Access-Control-Allow-Credentials‘ ‘true‘; #添加额外的HTTP头}location /stat {#push和pull状态的配置rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {root /var/www/rtmp; #指定stat.xsl的位置}}
}rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /tmp;rtmp {out_queue   4096;out_cork    8;max_streams 64;server {listen 1935;server_name www.test.*; #用于虚拟主机名后缀通配application myapp {live on;gop_cache on; #打开GOP缓存,降低播放延迟}}server {listen 1935;server_name *.test.com; #用于虚拟主机名前缀通配application myapp {live on;gop_cache on; #打开GOP缓存,降低播放延迟}}server {listen 1935;server_name www.test.com; #用于虚拟主机名完全匹配application myapp {live on;gop_cache on; #打开GOP缓存,降低播放延迟}}
}

from:https://www.cnblogs.com/car-eye/p/8849722.html

Car-eye-http-flv-module 实现nginx-rtmp-mudule HTTP方式的FLV直播功能相关推荐

  1. Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

    一.环境介绍 操作系统:虚拟机运行的Ubuntu18.04 64位系统 二.流媒体服务器介绍 百度百科: 流媒体指以流方式在网络中传送音频.视频和多媒体文件的媒体形式.相对于下载后观看的网络播放形式而 ...

  2. Nginx RTMP 功能研究

    Nginx-RTMP功能调研 1. RTMP协议介绍...2 2.RTMP server.3 2.1当前的流媒体server.3 2.2Wowza功能...3 3.Nginx-based RTMP s ...

  3. [转]Nginx RTMP 功能研究(Nginx流媒体)

    转自:http://blog.csdn.net/cccallen/article/details/8440191 看点: 1.    Nginx 配置信息与使用.  (支持 rtmp与HLS配置) 2 ...

  4. Nginx Rtmp Module - HLS切片和级联播放

    #Nginx Rtmp Module - HLS切片和播放 1.名词解释 媒体片段文件(.ts): 媒体片段是由源站生成的,基于编码后的媒体源,并且是由一系列的 .ts 格式的文件组成,其中包含了你想 ...

  5. ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制

    ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制 2014年 四月 19日 周六 | tags: ffmpeg, rtmp, rtmpdump, nginx, -- (perm ...

  6. linux 搭建nginx + rtmp服务器

    linux 搭建nginx + rtmp服务器 一  环境准备 虚拟机ubuntu 装备,安装一些nginx 必要的依赖和服务 sudo apt-get install libpcre3 libpcr ...

  7. Mac使用nginx+rtmp服务器

    一.安装Homebrow 已经安装了brow的可以直接跳过这一步. 执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/ ...

  8. windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流

    1.下载live555+ffmpeg视频文件作为媒体源 将视频文件me-like-yuh.ts和ffmpeg推流脚本ffmpeg-rtsp2rtmp.bat放在mediaserver目录下 ffmpe ...

  9. mac搭建nginx+rtmp直播流

    1.nginx安装 (1)克隆github的项目 brew tap denji/nginx (2)安装nginx+rtmp模块 brew install nginx-full --with-rtmp- ...

  10. nginx rtmp 编码_基于Nginx的媒体服务器技术

    国内应用比较多的开源流媒体服务器nginx-rtmp-module一直存在功能少.集群化难度大等问题.在LiveVideoStack线上分享中,PingOS 开源项目组开发工程师.UCloud RTC ...

最新文章

  1. C++面试题(1-3)
  2. 主流大数据技术全体系参数与搭建与后台代码工程框架的编写(百分之70)
  3. 数据回归分析和拟合的Matlab实现
  4. Spring Clould负载均衡重要组件:Ribbon中重要类的用法
  5. AngularDart 现已全面采用 Dart 开发
  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之环境配置
  7. urlEncoder和urlDecoder的作用和使用
  8. Science报道新研究:同行评审后的研究仅比预印本研究质量提高4%
  9. 如何配置CentOS或者RedHat5.X、6.X、7.X的网络yum源
  10. Android WebView:这是一份全面 详细的WebView学习指南
  11. Numpy,Pandas,Matplotlib
  12. android gradle 在assembleRelease之前 or 之后执行自定义task
  13. 电子商务平台搭建方案
  14. pandas删除最后一列_Python中pandas dataframe删除一行或一列:drop函数详解
  15. archlinux 安装chrome浏览器
  16. linux 显卡 1050ti,MAX-Q终于出中端卡了 GTX1050Ti MAX-Q显卡曝光
  17. 查询主机序列号/基本信息
  18. 解决IE没有响应、卡死现象
  19. js 重置表单 reset form
  20. Idea中自动注释的缩进(避免添加注释自动到行首)

热门文章

  1. 100万年薪只是起步价!跨境AI人才遭疯抢后最终去了哪儿?
  2. 兄弟!kafka的重试机制,你可能用错了~
  3. 解决 IDEA 使用过程中让你觉得不爽的一些问题
  4. Java 代码精简之道
  5. 这次终于不再为 iptables 犯迷糊了!
  6. 老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗...
  7. 这个GAN没见过猪,却能把狗变成猪
  8. OpenCV双目稠密匹配BM算法源代码详细解析
  9. 你中招了吗?混不好大学的人,都有这4种表现
  10. 多个文件中的数据处理,输出自己想要是数据