直播技术涵盖很广,现如今广泛了解的有视频网站的个人直播、手机直播、安防方面的摄像头监控等会使用到直播的技术。
绍直播流程中的各个技术环节。可以理解分为采集端、流媒体服务器以及播放端;还需要了解什么是推流,什么是拉流。
既然需要推流和拉流, 就必然涉及到视频流的传输,所以接下来介绍常用的流媒体传输协议 常用的流媒体传输协议有RTMP,RTSP,HLS,HTTP-FLV
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)"
brew tap homebrew/nginx
brew install nginx-full --with-rtmp-module
查看 nginx 信息
brew info nginx-full
执行上面的命令后我们可以看到信息
执行命令 ,启动nginx服务
nginx
浏览器地址栏输入:http://localhost:8080
出现Welcome to nginx , 代表nginx安装成功了。
编辑 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; 不记录数据
nginx -s reload
brew install ffmpeg
直接在浏览器上搜索 VLC,下载安装即可
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的管理端界面
推流摄像头
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
打开vlc这个播放器软件 点击File---->Open Network 在弹出来的框中选择Network然后输入URL:
rtmp://localhost:1935/zbcs/room
双击播放
播放界面
参考文章:
前端如何实现整套视频直播技术流程
使用node-media-server搭建一个简易的流媒体服务器
mac下面用ffmpeg抓取桌面以及摄像头推流进行直播