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. hihoCoder #1695 公平分队II

    题目大意 Alice 和 Bob 在玩一个游戏.Alice 将 $1$ 到 $2n$ 这 $2n$ 个整数分成两组,每组 $n$ 个.Bob 从中选一组,剩下一组归 Alice.Alice 可以与 B ...

  2. HDU1429 胜利大逃亡 状压bfs

    http://acm.hdu.edu.cn/viewcode.php?rid=22225154 因为总共a-j有10种钥匙,所以可以把有没有钥匙的状态压到一个int数里,然后dfs. 昨天状态特别不好 ...

  3. SQL的in的参数化查询

    SqlCommand cmd=con.CreateCommand(); cmd.CommandText="exec('select * from novel where novelid in ...

  4. 动软代码生成器连接Oracle 11g

      首先要说明的是:如果你连接的是远程的Oracle服务器,你本地机器必须装Oracle客户端,然后 用sqldeveloper 先建立一个连接. 然后你才能用.NET动软代码生成器连接到数据库. 因 ...

  5. HelloWorld 和相关设置

    写这篇文章的初衷很简单,就是想再一次证明 IntelliJ IDEA 对于 Java 开发人员来说,确实比 eclipse 要好用得多,鉴于目前市面上关于 IntelliJ IDEA 的教程比较少,叙 ...

  6. rabbitmq 连接測试

    1.假设写错了host (如:factory.setHost("locathost"); )报错: Exception in thread "main" jav ...

  7. WPF, WPF Browser Application(XBAP) 和 Silverlight 的区别

    由图可见,XBAP与WPF的区别是“受限的”:Silverlight与XBAP的区别是,不需要.NET Framework. 上星期與以前的同事爭論著究竟使用XBAP來開發XX用戶端 (為筆者之前開發 ...

  8. 【资料】wod旗帜,纹章

    物品 徽章 旗帜 掉落地点 备注 火焰纹章 法师与怪物 火焰魔法.魔法攻防 雄鹰纹章 受诅咒的遗迹 弩系相关 盗贼纹章 捉迷藏 偷袭.匕首.割喉.近攻防 守夜人的纹章 酒馆里平静的一天 钝器.双打.旋 ...

  9. UVa 1329 - Corporative Network Union Find题解

    UVa的题目好多,本题是数据结构的运用,就是Union Find并查集的运用.主要使用路径压缩.甚至不须要合并树了,由于没有反复的连线和改动单亲节点的操作. 郁闷的就是不太熟悉这个Oj系统,竟然使用库 ...

  10. Appium+python自动化55-appium desktop每次启动安装Unlock和Appium Setting问题

    前言 部分真机可能会出现每次运行代码,启动app之前都会重复安装Unlock和Appium Setting这两个小工具,有的手机会自动安装,这个还好. 有的手机每次都会弹出一个安装确认框(如部分小米和 ...