技术标签: rtmp 流媒体直播 http-flv 直播 流媒体 hls
转载请注明出处:https://blog.csdn.net/impingo
项目地址:https://github.com/im-pingo/pingos
最初我目前所维护的nginx-rtmp-module是在AlexWoo的基础上进一步开发的。
在经过一些列功能迭代后,我独立维护了https://github.com/im-pingo/pingos进一步将原nginx-rtmp-module进行集成化,融合进了直播流监控页面、flv.js播放器、一键安装部署等等功能。
所以pingos是在nginx-rtmp-module的基础上做了加法,欢迎大家直接使用pingos。
项目 | 特点 |
---|---|
nginx-rtmp-module | 单一的nginx-rtmp-module模块,编译起来相对繁琐,配置文件和网页播放器都需要自己搭建。 |
pingos | 这是一个集成化的流媒体服务器项目,有一键安装部署脚本,配置文件、网页播放器和系统控制台都已经集成好,更方便安装维护。一键安装脚本可在各个linux发行版本和macOS操作系统使用。 |
我会持续维护https://github.com/im-pingo/pingos项目,并且希望能够得到更多人的能够发现问题并且及时在github上提出问题,只要本人看到都会给出回复并且及时修复。
功能 | pingos | nginx-rtmp-module | 备注 |
---|---|---|---|
HTTP(S)-FLV | √ | × | pingos支持HTTP(S)-FLV播放,具体功能请看这篇文章 |
HTTP(S)-TS | √ | × | pingos支持HTTP(S)-TS播放,具体功能请看这篇文章 |
HLS+ | √ | × | pingos支持HLS+直播,具体功能请看这篇文章 |
多进程 | √ | × | pingos支持进程间码流同步,具体操作请看这篇文章 |
动态(静态)回源 | √ | × | pingos支持从别的源站拉http-flv或者rtmp流(目前正在实现rtsp拉流功能),具体操作请看这篇文章 |
动态(静态)转推 | √ | × | pingos支持将本地http-flv或者rtmp流转推到其他服务器上(目前正在实现rtsp拉流功能),具体操作请看这篇文章 |
HTTP-FLV回源拉流 | √ | × | pingos的回源协议支持rtmp和http-flv |
RTSP回源拉流 | 正在支持 | × | rtsp回源拉流更能已在最后调试阶段 |
GOP缓存 | √ | × | pingos支持gop缓存和低延时模式 |
VHOST功能 | √ | × | pingos像nginx http配置一样支持多server_name配置 |
application支持通配符 | √ | x | 当你需要非常多application时,不需要再在nginx.conf中配置那么多application,只需配置一个通配符 application * { live on;} 即可 |
H265编码 | √ | × | pingos的rtmp/http-flv/http-ts/hls/hls+均支持h265编码 |
mp3编码 | √ | × | pingos的rtmp/http-flv/http-ts/hls/hls+均支持mp3编码 |
html5网页播放器集成 | √ | × | pingos安装成功后默认集成一个html5的播放器,方便开发者调试 |
丰富的控制台接口 | √ | × | pingos支持丰富的控制台接口,例如:开播、停止、暂停、录像、停止录像、切换直播流、断开某条客户端等等接口 |
流量计费 | √ | × | pingos支持流量日志定制化的输出,具体功能请查看文章 |
# 快速安装
git clone https://github.com/im-pingo/pingos.git
cd pingos
./release.sh -i
# 启动服务
cd /usr/local/pingos/
./sbin/nginx
后面会专门写几篇博客来解析其中的配置项和对应的应用场景。
cd /usr/local/pingos
vim conf/nginx.conf
更多配置内容请访问项目官网https://pingos.io
cd nginx-rtmp-module
cp stat.xsl /usr/local/pingos/html/stat.xsl
cd /usr/local/pingos
./sbin/nginx
由于nginx需要监听80和1935端口,所以一定要确保你的服务器防火墙没有屏蔽这两个端口。
本系统集成了一个html5播放器,访问地址是 http://ip/h5player/flv
这个播放器是基于flv.js的网页播放器,可以实现无插件播放http-flv直播流。
一旦你能够访问这个页面,说明你的直播服务器已经成功搭建起来了。
ffmpeg -re -i 文件.mp4 -vcodec copy -acodec copy -f flv rtmp://ip地址/live/01
将上述命令中的your-input-file替换成你的媒体文件名,将your-server-ip替换成你的服务器ip地址,stream-name是你希望命名的流名(可随意)。
注意:ffmpeg命令中-re参数含义是按照真实时间戳速率读取文件,这个选项在推送文件到直播服务器中是必须的。另外-vcodec和-acodec是转码参数,如果你要推送的文件视频编码格式本身就是h264编码并且音频编码格式是aac或者mp3的话则不需要这两个参数。(重新编码非常消耗计算资源,使用时要注意)
Open Broadcaster Software(简称OBS)是一款直播流媒体内容制作软件。同时程序和其源代码都是免费的。
支持 OS X、Windows、Linux操作系统。适用于多种直播场景。满足大部分直播行为的操作需求(发布桌面、发布摄像头、麦克风、扬声器等等)。
在浏览器中打开:http://your-server-ip/rtmp_stat
可以通过后台页面实时查看当前在线的推拉流情况。
协议 | 地址 |
---|---|
rtmp | rtmp://ip/live/流名 |
http-flv | http://ip/live/流名 |
hls | http://ip/hls/流名.m3u8 |
hls+ | http://ip/hls2/流名.m3u8 |
http-ts | http://ip/ts/流名 |
QQ交流群:697773082
文章浏览阅读4.9k次,点赞4次,收藏14次。Visio画时序图组件,实用方法很简单,下载,解压,然后放到一个固定的位置,Visio默认的查找位置为“D:\用户目录\我的文档\我的形状”然后打开Visio,选择更多形状,我的形状,一般就添加进来了,没有添加的话,点击“组织我的形状”,看看下面有没有vss格式的三个文件,如果有的话,关掉重开就有了。..._visio画fpga时序图
文章浏览阅读395次。在Linux下使用终端指定打开文件夹,提示目录名称中包含语法错误,此时可以有两个选择:1、按照Linux推荐的文件命名规范,对文件夹名进行修改;2、使用转义符 \;3、成对使用双引号 "";Linux文件命名规范简介Linux系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。除非有特别的原因否则用户创建的文件和目录名要使用小写字符。大多数的Linux命令也使用小写字符。Linux系统下..._linux指令cd进到指定目录,目录有特殊字符
文章浏览阅读161次。Calendar代码:public class Demo01Calendar {public static void main(String[] args) { Calendar c=Calendar.getInstance();//多态。//获取日历信息 System.out.println(c); System.out.println(c.get(Calendar..._import calendar
文章浏览阅读186次。关注:决策智能与机器学习,一篇文章Get一个知识点回顾自从1956年达特茅斯人工智能夏季研讨会首次提出“人工智能”的概念以来,两起两落,到现在第三次浪潮,人工智能已经可以算是完成特定任...
文章浏览阅读7.9k次,点赞2次,收藏5次。安装的cudnn的版本是7.1.0.3,而要求的cudnn版本是7.3.0.0。将tensorflow版本从1.5换成1.8,顺利运行程序(升级tensorflow版本来解决)ll 命令查看 连接 /usr/local/cuda/lib64下 把对应的 libcudnn.so.7,3,1连到 libcudnn.so.7 在连到libcudnn.sosudo ln -sf li..._tensorflow/stream_executor/cuda/cuda_dnn.cc:378] loaded runtime cudnn librar
文章浏览阅读2k次。【代码】SQL——limit和offset的用法。_sql limit
文章浏览阅读3.5k次,点赞2次,收藏7次。#ifndef _SIGNAL_H#defing _SIGNAL_H#includetypedef int sig_atomic_t;typedef unsigned int sigset_t;#define _NSIG 32 //定义信号#define NSIG _NSIG#define SIGHUP 1 //hang up 挂断控制终端或进程_signal.h头文件
文章浏览阅读217次。java 实现三子棋,随机绘制图像,猜数游戏_java 上机题
文章浏览阅读186次。使用NFS自动挂载文件系统便利性大大增强,首先连接网线,传输数据,此外保证服务器和单板能够ping的通。单板上电(开发板已经烧录有u-boot和内核),任意键中止boot进程,q退出菜单,输入print,更改“bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200”这一句。使用 set bootarg..._nfs设置账号密码挂载
文章浏览阅读1.4k次。2019独角兽企业重金招聘Python工程师标准>>> ..._java 通过kafka jmx mbeanserverconnection 获取offset
文章浏览阅读291次,点赞2次,收藏2次。在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理
文章浏览阅读4.1k次,点赞16次,收藏12次。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。从上我们可以看出,goto语句真正适合的引用场景其实就是:当我们写了很多for循环时,我们需要写很多个break来跳出来for循环时,我们可以直接用goto语句来跳出for循环。综上,我们需要了解goto语句就行,但是goto语句的应用场景不是很多,提及的时候我们还是要会运用。下面我们来简单的写一个有趣的关机小程序。_goto使用