从本节开始,正式开启流媒体相关的内容。

流媒体

基本概念

流媒体(Streaming media),也叫做:流式媒体。

  • 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程
  • 此技术使得数据包可以像流水一样发送,如果不使用此技术,就必须得先下载整个媒体文件才能进行观看

流媒体的一个非常典型、火爆的应用场景:直播。近几年,直播行业是蒸蒸日上。

直播架构

下面放几张图片,简单了解一下直播技术的基本架构。

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

用文字总结一下基本流程是:

  • 分享端(比如主播) -> 产生音视频 -> 编码压缩音视频 -> 推流到服务器
  • 观看端(比如观众) -> 从服务器拉流 -> 解码解压缩音视频 -> 播放音视频

推拉流

  • 推流:通过流媒体协议,将音视频数据发送到流媒体服务器
  • 拉流:通过流媒体协议,从流媒体服务器上拉取获得音视频数据

流媒体协议

常见的流媒体协议有:RTMP、HLS等。

  • RTMP(Real-Time Messaging Protocol)

    • 译为:实时消息传输协议,由Adobe公司出品
    • 默认基于TCP的1935端口
  • HLS(HTTP Live Streaming)
    • 基于HTTP的流媒体网络传输协议,苹果公司出品
    • 参考:RFC 8216

本文主要介绍RTMP协议相关知识。

服务器环境

首先,要搭建好RTMP服务器环境,主要步骤如下:

  • 安装虚拟机VMWareParallels Desktop

    • 我这里安装的是VMWare
  • 用虚拟机上安装CentOS系统
    • CentOS是Linux系统的一种,这里用7.6版本,建议跟我的版本保持一致
  • 在CentOS系统中安装nginxnginx-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服务器搭建的更多相关文章

  1. 【秒懂音视频开发】02_Windows开发环境搭建

    音视频开发库的选择 每个主流平台基本都有自己的音视频开发库(API),用以处理音视频数据,比如: iOS:AVFoundation.AudioUnit等 Android:MediaPlayer.Med ...

  2. 【秒懂音视频开发】23_H.264编码

    本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...

  3. 【秒懂音视频开发】14_AAC编码

    AAC(Advanced Audio Coding,译为:高级音频编码),是由Fraunhofer IIS.杜比实验室.AT&T.Sony.Nokia等公司共同开发的有损音频编码和文件格式. ...

  4. 【秒懂音视频开发】18_详解YUV

    本文的主角是多媒体领域非常重要的一个概念:YUV. 简介 YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中. 也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式 ...

  5. 【秒懂音视频开发】05_Qt开发基础

    控件的基本使用 为了更好地学习Qt控件的使用,建议创建项目时先不要生成ui文件. 打开mainwindow.cpp,在MainWindow的构造函数中编写界面的初始化代码. 窗口设置 MainWind ...

  6. 【秒懂音视频开发】12_播放WAV

    对于WAV文件来说,可以直接使用ffplay命令播放,而且不用像PCM那样增加额外的参数.因为WAV的文件头中已经包含了相关的音频参数信息. ffplay in.wav 接下来演示一下如何使用SDL播 ...

  7. 【秒懂音视频开发】21_显示BMP图片

    文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的<播放YUV>做准备. 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来会更 ...

  8. WebRTC 音视频开发

    WebRTC 音视频开发 webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...

  9. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

随机推荐

  1. Task06:综合练习

    练习一: 各部门工资最高的员工(难度:中等) 创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--- ...

  2. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

  3. 【模拟8.05】优美序列(线段树 分块 ST算法)

    如此显然的线段树,我又瞎了眼了 事实上跟以前的奇袭很像....... 只要满足公式maxn-minn(权值)==r-l即可 所以可以考虑建两颗树,一棵节点维护位置,一棵权值, 每次从一棵树树上查询信息 ...

  4. C#构造函数中:this()的作用

    通俗来说,可以说是构造函数的继承 (1) :this()用来继承无参时的构造函数,例如下面代码 static void Main(string[] args) { AA aA = new AA(&qu ...

  5. delphi xe 10.3 利用Git组群开发,Git服务器安装,Git 拉取,提交,推送相关设置操作

    1. Git服务器安装, 参考 https://blog.csdn.net/u012842630/article/details/97175397 Git服务器官方网站,要FQ. 2. 工具软件 gi ...

  6. Tkinter 吐槽之二:Event 事件在子元素中共享

    背景 最近想简单粗暴的用 Python 写一个 GUI 的小程序.因为 Tkinter 是 Python 自带的 GUI 解决方案,为了部署方便,就直接选择了 Tkinter. 本来觉得 GUI 发展 ...

  7. R语言六种数据类型

    1 向量 1.1 定义向量 向量使用c来赋值,向量中不能混合不同类型的数据 x<-c(2,3,7,6,8)  数值型num y<-("one","two&qu ...

  8. 第二篇CTF-MISC

    第一篇写成了日记,发布不了.第一篇CTF-MISC 04.坚持60S 附件下载下来,是个jar的文件,打开 耶?这是嘛呀? 反正没看懂,既然是jar文件,直接上jd-gui反编译一波试试 这么明显的f ...

  9. testt

    一级标题 二级标题 三级标题 四级标题 l 1

  10. 8、WindowServer离线安装.NET Framework 3.5

    WindowsServer 默认是不安装 .netframework3.5 的. 8.1.WindowsServer2012R2: 1.把镜像目录下的"sources"目录复制到 ...