Mac上搭建直播服务器 nginx + rtmp
2021/10/25 7:13:12
本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享