nginx-rtmp

https://github.com/pengqiuyuan/nginx-rtmp

nginx-rtmp 流媒体服务器的搭建(采集桌面,手机直播)

在线Demo,直播自己的pc机桌面音视频(现在就一单线路,1M带宽,2个人向同一个目录下推送m3u8、ts文件肯定不行,之后再改,资源有限)

1、下载ffmpeg及脚本
http://download.csdn.net/detail/pqy15005917185/8160799
2、安装screen-capture-recorder(采集windows桌面、摄像头)
下载地址:
http://download.csdn.net/detail/pqy15005917185/8160801
直接安装就ok了,安装之后才可以使用bat脚本的
“-f dshow -i video=screen-capture-recorder -f dshow -i audio=virtual-audio-capturer”

3、解压,点击"流服务器直播.bat",运行如下图

4、vlc访问地址“rtmp://182.92.69.21/hls/test” 或者直接用iphone来访问“http://182.92.69.21/hls/test.m3u8”

使用环境:

  • linux
  • nginx 安装nginx-rtmp-module模块
  • 客户端 ffmpeg 转换以及流化音视频
  • 采集桌面或摄像头 screen-capture-recorder-to-video-windows-free
https://github.com/arut/nginx-rtmp-module  nginx-rtmp流媒体模块
https://github.com/rdp/screen-capture-recorder-to-video-windows-free 采集桌面、摄像头

主要的使用场景:


1. 小米盒子提供视频源,通过设备(桌面或者摄像头)采集音视频,通过rtmp等协议,经过ffmpeg转换以及流化音视频到nginx-rtmp流媒体服务器。

2.拓扑图

展示(这里展示采集桌面视频)


1. pc机桌面

2. vlc播放直播桌面视频(rtmp://182.92.69.21/hls/test)

3. 手机播放m3u8流(182.92.69.21/hls/test.m3u8)

环境部署及流媒体服务器搭建:


1.nignx及nginx-rtmp模块的安装

nginx-rtmp的下载,直接下源码解压就ok了,我放在这里/home/dev/pengqiuyuan/nginx-rtmp-module-master

https://github.com/arut/nginx-rtmp-module

在编译nginx的时候添加nginx-rtmp模块的路径

./configure --add-module=/home/dev/pengqiuyuan/nginx-rtmp-module-master --with-http_ssl_module
make
make install

2.nginx平滑安装nginx-rtmp

3.nginx.conf的修改(完整的流媒体配置)

(1).chunk_size:流整合的最大的块大小。默认值为 4096。这个值设置的越大 CPU 负载就越小。这个值不能低于 128。

(2).listen 1935:给NGINX添加一个监听端口以接收RTMP连接,iptables不需要开放1935端口。

(3).application hls:HLS协议支持。hls_path(m3u8文件生产路径)、hls_fragment、hls_playlist_length(5个分片,每片11s .注:这样设置实时直播延时在1分钟左右)

(4).http请求地址(http://182.92.69.21/hls/test.m3u8)

(5).vlc播放rtmp流(rtmp://182.92.69.21/hls/test)

(6).hls_path和location /hls{alias}的路径保持一样如:/home/dev/pengqiuyuan/streaming ,目录下面保存的是客户端推送到流服务器的m3u8、ts文件

# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx;
worker_processes 1; #error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info; pid /var/run/nginx.pid; events {
worker_connections 1024;
} rtmp {
server{
listen 1935;
chunk_size 4096;
application hls {
live on;
hls on;
hls_path /home/dev/pengqiuyuan/streaming;
hls_fragment 11s;
hls_playlist_length 55s;
allow play all;
}
}
} http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf; server{
listen 80;
server_name www.fjpqy.cn;
access_log logs/redmine.access.log;
error_log logs/redmine.error.log info;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 256k;
proxy_buffers 8 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
location /stat{
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{
root /home/dev/pengqiuyuan/nginx-rtmp-module-master/;
}
location /test{
alias /home/dev/pengqiuyuan/nginx-rtmp-module-master/test/rtmp-publisher/;
}
location /hls{
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /home/dev/pengqiuyuan/streaming;
expires -1;
}
}
}

4.客户端部分,采集桌面视频以及ffmpeg转换以及流化音视频

之前遇到丢帧的问题,real-time buffer 276% full! frame dropped!

问题:
https://github.com/rdp/screen-capture-recorder-to-video-windows-free/issues/37

桌面音视频采集成功的例子:

ffmpeg -f dshow -i video=screen-capture-recorder -f dshow -i audio=virtual-audio-capturer -vf scale=1280:720 -vcodec libx264 -r 60.97 -acodec libvo_aacenc -ac 2 -ar 44100 -ab 128 -pix_fmt yuv420p -tune zerolatency -preset ultrafast -f flv "rtmp://192.168.1.50/hls/test"

ffmpeg(带脚本)下载地址,流媒体服务器搭建好之后,修改bat脚本里的推送地址“rtmp://192.168.1.50/hls/test”,直接点击运行就可以向服务器推送了,之后“/home/dev/pengqiuyuan/streaming”目录下面会生产m3u8、ts文件就成功了 下载地址:http://download.csdn.net/detail/pqy15005917185/8160799

阿里云就1M的带宽,被占的满满的,下载地址换到csdn上面好了

 

5.视频直播+实时聊天部分,之后补充

整体思路是 nginx-rtmp(流媒体服务) + nodejs(即时聊天)

nginx-rtmp流媒体服务器搭建【转】的更多相关文章

  1. rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加

    关键词:Nignx(http服务器):rtmp,hls(流媒体服务) 前言:感谢开源,感谢战斗民族.现在在做流媒体服务的一些工作,流媒体服务器搭建的网上教程多入牛毛,但是细细查看,发现很多同志贴上来的 ...

  2. EasyDSS RTMP流媒体服务器基于RTMP拉模式和转推模式搭建公网全平台全终端直播集群的方案

    近期,我们有一位EasyDSS流媒体用户在需求中提出:如何搭建一个用户量巨大的讲座直播,提供给普通用户免费观看,每天上午和下午分别有几场讲座同时直播,持续几天时间. 推荐方案 ★ 由于甲方是中国移动运 ...

  3. 北广传媒RTMP流媒体服务器漏洞

    北广传媒移动电视(http://www.bj-mobiletv.com/)的RTMP流媒体服务器有漏洞 该漏洞可以上我们通过他们的服务器向互联网直播视频 使用任意可以发布RTMP流媒体的客户端(例如: ...

  4. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  5. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)

    [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式.接下来,小编就和大家一起来做个小Demo来体会一下N ...

  6. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)

    参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 [前言] 在<架构之路:nginx与IIS服务器搭 ...

  7. Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡   分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...

  8. librtmp将本地FLV文件发布到RTMP流媒体服务器

    没有用到ffmpeg库 可以将本地FLV文件发布到RTMP流媒体服务器 使用librtmp发布RTMP流可以使用两种API:RTMP_SendPacket()和RTMP_Write(). 使用RTMP ...

  9. RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播

    方案介绍 目前互联网直播的CDN和标准RTMP流媒体服务器通常只能接收RTMP格式的音视频推流.目前市场上有一些自带RTMP推流的摄像机和编码器,可以直接在其rtmp推流配置里面配置推送到RTMP流媒 ...

随机推荐

  1. CSS 笔记——列表表格

    6. 列表表格 -> 列表 (1)list-style 基本语法 list-style : list-style-image || list-style-position || list-sty ...

  2. WordPress插件会员简化1.58 -任意文件下载漏洞(附poc)

    今天我们将讨论在WordPress插件WordPress插件与重点会员简化v1.58作为这个剧本的创作时间不打补丁的扶贫开发实践.脆弱脚本如下: CVE-ID:cve-2017-1002008 当然, ...

  3. redisson实现基于业务的互斥锁

    虽然数据库有锁的实现,但是有时候对于数据的操作更需要业务层控制. 这个解决的问题有次面试被问到过,当时不知道怎么解决,乱说一通,今天也算是有个解决方案了 项目中有个需求,就是订单需要经过一层一层的审核 ...

  4. JavaScript设计模式与开发实践——读书笔记1.高阶函数(上)

    说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<Java ...

  5. ServiceStack.OrmLite破解

    在 ServiceStack.OrmLite下的 OrmLiteConfigExtensions 第199行把这句注释掉就可以了 //LicenseUtils.AssertValidUsage(Lic ...

  6. 对于GTPv1协议头部的解析

    参考ETSI EN 301 347 GTP是GPRS Tunnelling Protocol 的简称.GTP分为GTPv0(已经淘汰),GTPv1 和GTPv2.下面,介绍的是GTPv1. GTPv1 ...

  7. myBatis 切换数据源(spring事务)理解

    1. mybatis (SqlSessionTemplate)的动态代理 a) sqlSession的结构 b)SqlSession 结构 public class SqlSessionTemplat ...

  8. 普通主板设置BIOS实现电脑插电自动启动

    说明: 1.为什么要实现这种功能,很多时候在民间都基本用普通PC来做小型服务器,公司的私服等等,而这些普通PC在民用电环境中经常会停电,一停就会导致服务器不能自动来电重启,所以这个功能来点开机是必须的 ...

  9. 内核镜像zImage是如何生成的

    转载:内核镜像zImage是如何生成的 内核镜像zImage是如何生成的 前面两篇文章介绍了vmlinux 文件生成,这个文件必然是核心的linux内核,但是它是ELF格式的文件,其中包含了可执行的二 ...

  10. js数组的使用

    1.创建: var arr=Array(); 2.遍历: for(var arg in arr){ alert(arr[arg]); } 3.追加 arr1.concat(arr2) 4.元素删除 d ...