【秒懂音视频开发】26_RTMP服务器搭建
从本节开始,正式开启流媒体相关的内容。
流媒体
基本概念
流媒体(Streaming media),也叫做:流式媒体。
- 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程
- 此技术使得数据包可以像流水一样发送,如果不使用此技术,就必须得先下载整个媒体文件才能进行观看
流媒体的一个非常典型、火爆的应用场景:直播。近几年,直播行业是蒸蒸日上。
直播架构
下面放几张图片,简单了解一下直播技术的基本架构。


你可能会有个疑问:信令服务器是干嘛用的?用来处理分享端和观看端的一些信令指令,比如创建房间、加入房间等。


用文字总结一下基本流程是:
- 分享端(比如主播) -> 产生音视频 -> 编码压缩音视频 -> 推流到服务器
- 观看端(比如观众) -> 从服务器拉流 -> 解码解压缩音视频 -> 播放音视频
推拉流
- 推流:通过流媒体协议,将音视频数据发送到流媒体服务器
- 拉流:通过流媒体协议,从流媒体服务器上拉取获得音视频数据
流媒体协议
常见的流媒体协议有:RTMP、HLS等。
- RTMP(Real-Time Messaging Protocol)
- 译为:实时消息传输协议,由Adobe公司出品
- 默认基于TCP的1935端口
- HLS(HTTP Live Streaming)
- 基于HTTP的流媒体网络传输协议,苹果公司出品
- 参考:RFC 8216
本文主要介绍RTMP协议相关知识。
服务器环境
首先,要搭建好RTMP服务器环境,主要步骤如下:
- 安装虚拟机VMWare或Parallels Desktop
- 我这里安装的是VMWare
- 用虚拟机上安装CentOS系统
- CentOS是Linux系统的一种,这里用7.6版本,建议跟我的版本保持一致
- 在CentOS系统中安装nginx、nginx-rtmp-module
- nginx:一款高性能的开源web服务器
- nginx-rtmp-module:让nginx支持rtmp
- 配置nginx
- 启动nginx
安装CentOS
下载CentOS
推荐网站:centoschina,上面有CentOS的各种版本,这里下载CentOS-7-x86_64-DVD-1810.iso,大小是4G多。
安装nginx
在nginx官网下载目前最新的稳定版:nginx-1.20.1.tar.gz。
安装nginx-rtmp-module
在nginx-rtmp-module的github下载目前最新的稳定版:v1.2.2.tar.gz。
配置nginx
启动nginx
【秒懂音视频开发】26_RTMP服务器搭建的更多相关文章
- 【秒懂音视频开发】02_Windows开发环境搭建
音视频开发库的选择 每个主流平台基本都有自己的音视频开发库(API),用以处理音视频数据,比如: iOS:AVFoundation.AudioUnit等 Android:MediaPlayer.Med ...
- 【秒懂音视频开发】23_H.264编码
本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...
- 【秒懂音视频开发】14_AAC编码
AAC(Advanced Audio Coding,译为:高级音频编码),是由Fraunhofer IIS.杜比实验室.AT&T.Sony.Nokia等公司共同开发的有损音频编码和文件格式. ...
- 【秒懂音视频开发】18_详解YUV
本文的主角是多媒体领域非常重要的一个概念:YUV. 简介 YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中. 也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式 ...
- 【秒懂音视频开发】05_Qt开发基础
控件的基本使用 为了更好地学习Qt控件的使用,建议创建项目时先不要生成ui文件. 打开mainwindow.cpp,在MainWindow的构造函数中编写界面的初始化代码. 窗口设置 MainWind ...
- 【秒懂音视频开发】12_播放WAV
对于WAV文件来说,可以直接使用ffplay命令播放,而且不用像PCM那样增加额外的参数.因为WAV的文件头中已经包含了相关的音频参数信息. ffplay in.wav 接下来演示一下如何使用SDL播 ...
- 【秒懂音视频开发】21_显示BMP图片
文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的<播放YUV>做准备. 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来会更 ...
- WebRTC 音视频开发
WebRTC 音视频开发 webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...
- 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)
随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...
随机推荐
- 《CNN Image Retrieval in PyTorch: Training and evaluati-ng CNNs for Image Retrieval in PyTorch》代码思路解读
这是一个基于微调卷积神经网络的图像检索的代码实现,这里我就基于代码做一个实现思路的个人解读,如果有不对的地方或者不够详细的地方,欢迎大家指出. 代码的GitHub地址:filipradenovic/c ...
- CDQ分治(三维偏序集)
排序,三关键字 去重 归并排序+树状数组 #include<bits/stdc++.h> using namespace std; #define re register int cons ...
- 【题解】10-19秀秀的森林(forest)
我恨秀秀倍增LCA+离线 (时光倒流) 题目 秀秀有一棵带n个顶点的树T,每个节点有一个点权ai-.有一天,她想拥有两棵树,于是她从T中删去了一条边.第二天,她认为三棵树或许会更好一些.因此,她又从她 ...
- 我对SpringMVC的浅见
之前在学校没接触框架这东西之前只接触过MVC的model1和model2,而真正接触SpringMVC的时候是在一年前,在学习过程中,我这才意识到SpringMVC大大简化了以前的开发工程,到了社会上 ...
- ESCMScript(1)let和const
1.let命令 基本语法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 1 var b = 2 console ...
- 【LeetCode每日一题 Day 5】5. 最长回文子串
大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...
- 41.1、shell编程案例
1.案例1(表达式案例): 开发shell脚本分别实现以定义变量,脚本传参以及read读入的方式比较2个整数大小.用条件表达式(禁if) 进行判断并以屏幕输出的方式提醒用户比较结果: [root@ba ...
- POJ 1279 Art Gallery 半平面交 多边形的核
题意:求多边形的核的面积 套模板即可 #include <iostream> #include <cstdio> #include <cmath> #define ...
- 其他:IntelliJ IDEA设置运行内存
1. 打开idea的安装路径,进去bin目录 2. 修改idea.exe.vmoptions 将idea内存设置为-Xms512m -Xmx2048m -XX:ReservedCodeCacheS ...
- mysql 索引介绍与运用
索引 (1)什么是索引? 是一种提升查询速度的 特殊的存储结构. 它包含了对数据表里的记录的指针,类似于字典的目录. 当我们添加索引时会单独创建一张表来去存储和管理索引,索引比原数据大,会占用更多的资 ...