Mac上搭建直播服务器 nginx + rtmp
直播技术介绍
直播技术涵盖很广,现如今广泛了解的有视频网站的个人直播、手机直播、安防方面的摄像头监控等会使用到直播的技术。
绍直播流程中的各个技术环节。可以理解分为采集端、流媒体服务器以及播放端;还需要了解什么是推流,什么是拉流。
- 采集端:顾名思义是视频的源头,视频的采集一般都是从真实的摄像头中得到的。例如移动端设别、PC端设备的摄像头以及一些摄像头设备
- 流媒体服务器:流媒体服务器是整个直播技术框架的非常重要的一环,它需要接收从采集端推上来的视频流,然后将该视频流再推送到播放端
- 播放端:播放端就是各种app,网页中的播放器,拉取流媒体服务器上的视频流,然后进行转码,最终播放出来
- 推流:把采集阶段收集的数据封装好传输到服务器的过程
- 拉流:服务器已有直播内容,用指定地址进行拉去的过程
既然需要推流和拉流, 就必然涉及到视频流的传输,所以接下来介绍常用的流媒体传输协议 常用的流媒体传输协议有RTMP,RTSP,HLS,HTTP-FLV
- RTMP:(可用于推流端和拉流端) Real Time Messaging Protocol 实时消息传输协议,RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。因为RTMP协议传输的基本是FLV格式的流文件,必须使用flash播放器才能播放.
- RTSP:(用于推流端) Real-Time Stream Protocol,RTSP 实时效果非常好,适合视频聊天、视频监控等方向
- HLS(用于拉流端) Http Live Streaming,由Apple公司定义的基于HTTP的流媒体实时传输协议。传输内容包括两部分:1.M3U8描述文件,2.TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。数据通过HTTP协议传输。目前video.js库支持该格式文件的播放
- HTTP-FLV(用于拉流端) 本协议就是http+flv,将音视频数据封装成FLV格式,然后通过http协议传输到客户端,这个协议大大方便了浏览器客户端播放直播视频流.目前flv.js库支持该格式的文件播放
1. 安装 Homebrow
Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
卸载命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
2. 安装 Nginx 服务器
brew tap homebrew/nginx
3. 安装 Nginx 服务器和 rtmp 模块
brew install nginx-full --with-rtmp-module
查看 nginx 信息
brew info nginx-full
执行上面的命令后我们可以看到信息
执行命令 ,启动nginx服务
nginx
浏览器地址栏输入:http://localhost:8080
出现Welcome to nginx , 代表nginx安装成功了。
4. 配置 rtmp
编辑 nginx.conf 文件
cd /opt/homebrew/etc/nginx/
vim nginx.conf
配置下面两个字段
server {listen 8080;server_name localhost;location / {root html;index index.html index.htm;}location /hls {types{application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root /usr/local/var/www;add_header Cache-Control no-cache;}
}
rtmp{server {listen 1935;chunk_size 4000;application rtmplive {live on;max_connections 1024;}application zbcs {live on;record off;}application hls{live on;hls on;hls_path/usr/local/var/www/hls;hls_fragment 5s;}}
}
rtmp是协议名称
server 说明内部中是服务器相关配置
listen 监听的端口号, rtmp协议的默认端口号是1935
application 访问的应用路径是 zbcs``
live on; 开启实时
record off; 不记录数据
5. 保存文件后,重新加载nginx的配置文件
nginx -s reload
6. 安装ffmepg工具
brew install ffmpeg
7. 安装 VLC
直接在浏览器上搜索 VLC,下载安装即可
8. 安装 node-media-server
NodeMediaServer支持:以rtmp,rtsp,hls协议拉进行推流,支持http-flv,ws-flv来进行拉流,也就是支持浏览器端使用http或websocket传输flv格式的视频流进行播放。
npm install node-media-server
新建app.js
const NodeMediaServer= require('node-media-server');const config = {rtmp: {port: 1935,chunk_size: 60000,gop_cache: true,ping: 60,ping_timeout: 30},http: {port: 8000,allow_origin: '*',}
};var nms = new NodeMediaServer(config)
nms.run();
运行 app.js
访问localhost:8000/admin地址,访问node-media-server的管理端界面
9. 使用 FFmpeg 命令推送地址
推流摄像头
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0" -vcodec libx264 -acodec libfaac -f flv rtmp://localhost:1935/zbcs/room
推流桌面 - 只有桌面内容
ffmpeg -f avfoundation -pixel_format uyvy422 -i "1" -f flv rtmp://localhost:1935/zbcs/room
只推流麦克风
ffmpeg -f avfoundation -i ":0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/zbcs/room
10. 验证视频
打开vlc这个播放器软件 点击File---->Open Network 在弹出来的框中选择Network然后输入URL:
rtmp://localhost:1935/zbcs/room
双击播放
播放界面
参考文章:
前端如何实现整套视频直播技术流程
使用node-media-server搭建一个简易的流媒体服务器
mac下面用ffmpeg抓取桌面以及摄像头推流进行直播
Mac上搭建直播服务器 nginx + rtmp相关推荐
- Mac上搭建直播服务器Nginx+rtmp
简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...
- mac搭建网站服务器,Mac上搭建Web服务器--Apache
局域网搭建 Web 服务器测试环境,因为Mac OS X 自带了 Apache 和 PHP 环境,我们只需要简单的启动它就行了. 1.命令:sudo apachectl start Apache服务器 ...
- ios即时通讯客户端开发之-mac上搭建openfire服务器
CHENYILONG Blog ios即时通讯客户端开发之-mac上搭建openfire服务器 转自:月光的尽头 ios即时通讯客户端开发之-mac上搭建openfire服务器 一.下载并安装open ...
- docker 安装nginx_使用 Docker 在你的 mac 上搭建个服务器
前言 为什么写这篇文章呢,主要是因为现在面临着这样一个需求.就是现在有一个 接手的 VUE 项目,在生产环境跑不起来. 但是它在服务器上是部署成功的. --然后我就想看看 vue run build ...
- iOS开发之mac上搭建openfire服务器
2019独角兽企业重金招聘Python工程师标准>>> 非盈利无广告开发者专用网址导航:www.dev666.com 1.概述 Openfire 采用Java开发,开源的实时协作(R ...
- centos+7虚拟机web服务器,CentOS7上搭建WEB服务器
mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...
- nginx mac 服务器 html,Mac上搭建 nginx 服务器
因为需要做一个自己的内测分发平台,所以需要搭建一台自己的服务器,于是我选择了使用它 nginx 来搭建服务器,很方便,很简单. 本文主要讲一下如何在 mac 上搭建 nginx 服务器,已经一些简单的 ...
- 教你如何在Mac上搭建自己的服务器——Nginx
教你如何在Mac上搭建自己的服务器--Nginx WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器. 我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透 ...
- Qt显示视频流——nginx+rtmp搭建直播服务器(二)
上次介绍的是使用ffmpeg推流,这次介绍的是使用nginx + rtmp搭建直播服务器. 环境:ubuntu 16.04 一. 安装nginx 和 rtmp模块 1. 下载安装 nginx 和 ng ...
最新文章
- NSNotification先注册监听,再发送消息
- mysql基础(二)—— 简单sql
- Mysql ERROR 1067: Invalid default value for ‘auth_time‘
- 最大流之最长递增子序列问题
- linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......
- Headers and client library minor version mismatch.
- 专题:CentOS社区企业操作系统
- 7-19 输出全排列 (20 分)
- 139邮件服务器怎么设置,139手机邮箱的设置
- 联想计算机启机按F1,电脑开机提示按f1不能正常启动怎么办
- 【最短路 搜索】JZOJ_4246 san
- 成都比较好的建筑设计公司有哪些?
- 什么叫组网_什么叫MESH组网
- 计算机技术培训新闻,二附院举办ERAS下人工智能计算机辅助关节置换技术
- P1486 [NOI2004]郁闷的出纳员
- 2022汽车驾驶员(初级)考试模拟100题及模拟考试
- IrfanView 看图软件下载及汉化
- 傅里叶变换频域积分性质和频域卷积性质证明
- 2021年西式面点师(中级)试题及解析及西式面点师(中级)模拟考试题库
- matlab从excel中读取文件进行曲线拟合 并导出公式
热门文章
- matlab 卷积求图像梯度,图像的卷积(滤波)运算(一)——图像梯度
- 星座夫妻(真的很准)
- linux的watchdog代码分析,Watchdog机制以及问题分析
- fcn_101代码理解
- HTML插入FLASH的全兼容解决方案[主讲SWFObject方法]
- Windows中的共享文件和文件服务器
- idea 出现 Failure to find org.eclipse.m2e:lifecycle-mapping:pom:1.0.0 in http://maven.aliyun.com/
- RK3229添加两个遥控器用户码
- 国内智能卡杂志的起起落落
- Flutter之Migrating to null safety