直播技术介绍

直播技术涵盖很广,现如今广泛了解的有视频网站的个人直播、手机直播、安防方面的摄像头监控等会使用到直播的技术。

绍直播流程中的各个技术环节。可以理解分为采集端、流媒体服务器以及播放端;还需要了解什么是推流,什么是拉流。

  • 采集端:顾名思义是视频的源头,视频的采集一般都是从真实的摄像头中得到的。例如移动端设别、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相关推荐

  1. Mac上搭建直播服务器Nginx+rtmp

    简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...

  2. mac搭建网站服务器,Mac上搭建Web服务器--Apache

    局域网搭建 Web 服务器测试环境,因为Mac OS X 自带了 Apache 和 PHP 环境,我们只需要简单的启动它就行了. 1.命令:sudo apachectl start Apache服务器 ...

  3. ios即时通讯客户端开发之-mac上搭建openfire服务器

    CHENYILONG Blog ios即时通讯客户端开发之-mac上搭建openfire服务器 转自:月光的尽头 ios即时通讯客户端开发之-mac上搭建openfire服务器 一.下载并安装open ...

  4. docker 安装nginx_使用 Docker 在你的 mac 上搭建个服务器

    前言 为什么写这篇文章呢,主要是因为现在面临着这样一个需求.就是现在有一个 接手的 VUE 项目,在生产环境跑不起来. 但是它在服务器上是部署成功的. --然后我就想看看 vue run build ...

  5. iOS开发之mac上搭建openfire服务器

    2019独角兽企业重金招聘Python工程师标准>>> 非盈利无广告开发者专用网址导航:www.dev666.com 1.概述 Openfire 采用Java开发,开源的实时协作(R ...

  6. centos+7虚拟机web服务器,CentOS7上搭建WEB服务器

    mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...

  7. nginx mac 服务器 html,Mac上搭建 nginx 服务器

    因为需要做一个自己的内测分发平台,所以需要搭建一台自己的服务器,于是我选择了使用它 nginx 来搭建服务器,很方便,很简单. 本文主要讲一下如何在 mac 上搭建 nginx 服务器,已经一些简单的 ...

  8. 教你如何在Mac上搭建自己的服务器——Nginx

    教你如何在Mac上搭建自己的服务器--Nginx WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器. 我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透 ...

  9. Qt显示视频流——nginx+rtmp搭建直播服务器(二)

    上次介绍的是使用ffmpeg推流,这次介绍的是使用nginx + rtmp搭建直播服务器. 环境:ubuntu 16.04 一. 安装nginx 和 rtmp模块 1. 下载安装 nginx 和 ng ...

最新文章

  1. NSNotification先注册监听,再发送消息
  2. mysql基础(二)—— 简单sql
  3. Mysql ERROR 1067: Invalid default value for ‘auth_time‘
  4. 最大流之最长递增子序列问题
  5. linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......
  6. Headers and client library minor version mismatch.
  7. 专题:CentOS社区企业操作系统
  8. 7-19 输出全排列 (20 分)
  9. 139邮件服务器怎么设置,139手机邮箱的设置
  10. 联想计算机启机按F1,电脑开机提示按f1不能正常启动怎么办
  11. 【最短路 搜索】JZOJ_4246 san
  12. 成都比较好的建筑设计公司有哪些?
  13. 什么叫组网_什么叫MESH组网
  14. 计算机技术培训新闻,二附院举办ERAS下人工智能计算机辅助关节置换技术
  15. P1486 [NOI2004]郁闷的出纳员
  16. 2022汽车驾驶员(初级)考试模拟100题及模拟考试
  17. IrfanView 看图软件下载及汉化
  18. 傅里叶变换频域积分性质和频域卷积性质证明
  19. 2021年西式面点师(中级)试题及解析及西式面点师(中级)模拟考试题库
  20. matlab从excel中读取文件进行曲线拟合 并导出公式

热门文章

  1. matlab 卷积求图像梯度,图像的卷积(滤波)运算(一)——图像梯度
  2. 星座夫妻(真的很准)
  3. linux的watchdog代码分析,Watchdog机制以及问题分析
  4. fcn_101代码理解
  5. HTML插入FLASH的全兼容解决方案[主讲SWFObject方法]
  6. Windows中的共享文件和文件服务器
  7. idea 出现 Failure to find org.eclipse.m2e:lifecycle-mapping:pom:1.0.0 in http://maven.aliyun.com/
  8. RK3229添加两个遥控器用户码
  9. 国内智能卡杂志的起起落落
  10. Flutter之Migrating to null safety