一、前言

本系列文章是对音视频技能入门常识的收拾和复习,为进一步深化体系研究音视频技能稳固根底。文章列表:

  • 01-音视频技能中心常识|了解音频技能【移动通信技能的开展、声音的实质、深化了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的装备、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【命令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用命令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显示BMP图片、显示YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

二、流媒体

1. 根本概念

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

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

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

2. 直播架构

下面放几张图片,简略了解一下直播技能的根本架构。

  • 简略
    10-音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】
  • 具体
    10-音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】

你或许会有个疑问:信令服务器是干嘛用的?用来处理共享端和观看端的一些信令指令,比方创立房间、加入房间等。

  • 京东云
    10-音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】
  • 百度智能云
    10-音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】

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

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

3. 推拉流

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

4. 流媒体协议

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

  • RTMP(Real-TimeMessagingProtocol)
    • 译为:实时音讯传输协议,由Adobe公司出品
    • 默许根据TCP的1935端口
  • HLS(HTTPLiveStreaming)
    • 根据HTTP的流媒体网络传输协议,苹果公司出品
    • 参考:RFC 8216

本文首要介绍RTMP协议相关常识。

5. 服务器环境

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

  • 装置虚拟机VMWare或Parallels Desktop
    • 我这儿装置的是VMWare
  • 在虚拟机上装置CentOS体系
    • CentOS是Linux体系的一种,这儿用7.6版别,建议跟我的版别保持一致
  • 在CentOS体系中装置nginxnginx-rtmp-module
    • nginx:一款高性能的开源web服务器
    • nginx-rtmp-module:让nginx支持rtmp
  • 装备nginx
  • 发动nginx

6. 装置CentOS

6.1 下载CentOS

引荐网站:centoschina,上面有CentOS的各种版别,这儿下载CentOS-7-x86_64-DVD-1810.iso,巨细是4G多。

7. 装置nginx

在nginx官网下载现在最新的稳定版:nginx-1.20.1.tar.gz。

8. 装置nginx-rtmp-module

在nginx-rtmp-module的github下载现在最新的稳定版:v1.2.2.tar.gz。

9. 装备nginx

10. 发动nginx

11. 一些步骤和命令收拾

  • 装置依赖
      yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    
  • 设置共享文件夹
    • 检查共享成功与否
      • vmware-hgfsclient
    • 挂载到对应目录(这儿放mnt)
      • vmhgfs-fuse .host:/共享目录称号 /mnt/目录称号
  • 解压ngnix相关内容
    • cp 源 方针
    • tar -zxvf 解压文件
  • 进入nginx目录,履行configure进行装备
     ./configure --prefix=/usr/local/nginx --add-module=ngnix的rtmp模块目录 --with-http_ssl_module
    
  • 修改nginx装备
    • vim conf/nginx.conf
      rtmp {
          server {    
              listen 1935; # 端口
              chunk_size 4000;     
              application live { # 请求路径
                  live on;     
              }   
          }   
      }
      
  • 装备PATH
    • export PATH=$PATH:/usr/local/nginx/sbin
  • 发动nginx
    • nginx
  • 检查
    • 端口占用:lsof -i:1935
    • 杀死进程:kill -9 pid
  • 假如长途衔接不上rtmp服务器,有或许是因为防火墙把1935端口关掉了
    # 检查端口状况(回来no代表被封闭了)
    firewall-cmd --query-port=1935/tcp
    # 拿到zone称号(一般是public)
    firewall-cmd --get-active-zones
    # 打开端口
    firewall-cmd --zone=public --add-port=1935/tcp --permanent
    # 重启防火墙(再次检查端口状况,应该会回来yes了)
    firewall-cmd --reload
    
  • ffmpeg推流
    ffmpeg -i xx.mp4 -f flv rtmp://ip地址:1935/live/xx
    
  • ffmpeg拉流
    ffplay rtmp://ip地址:1935/live/xx
    

专题系列文章

1. 前常识

  • 01-探求iOS底层原理|综述
  • 02-探求iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
  • 03-探求iOS底层原理|LLDB
  • 04-探求iOS底层原理|ARM64汇编

2. 根据OC语言探求iOS底层原理

  • 05-探求iOS底层原理|OC的实质
  • 06-探求iOS底层原理|OC目标的实质
  • 07-探求iOS底层原理|几种OC目标【实例目标、类目标、元类】、目标的isa指针、superclass、目标的办法调用、Class的底层实质
  • 08-探求iOS底层原理|Category底层结构、App发动时Class与Category装载进程、load 和 initialize 履行、关联目标
  • 09-探求iOS底层原理|KVO
  • 10-探求iOS底层原理|KVC
  • 11-探求iOS底层原理|探求Block的实质|【Block的数据类型(实质)与内存布局、变量捕获、Block的种类、内存办理、Block的修饰符、循环引证】
  • 12-探求iOS底层原理|Runtime1【isa详解、class的结构、办法缓存cache_t】
  • 13-探求iOS底层原理|Runtime2【音讯处理(发送、转发)&&动态办法解析、super的实质】
  • 14-探求iOS底层原理|Runtime3【Runtime的相关应用】
  • 15-探求iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
  • 16-探求iOS底层原理|RunLoop的应用
  • 17-探求iOS底层原理|多线程技能的底层原理【GCD源码剖析1:主行列、串行行列&&并行行列、全局并发行列】
  • 18-探求iOS底层原理|多线程技能【GCD源码剖析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
  • 19-探求iOS底层原理|多线程技能【GCD源码剖析2:栅门函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
  • 20-探求iOS底层原理|多线程技能【GCD源码剖析3:线程调度组dispatch_group、事情源dispatch Source】
  • 21-探求iOS底层原理|多线程技能【线程锁:自旋锁、互斥锁、递归锁】
  • 22-探求iOS底层原理|多线程技能【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
  • 23-探求iOS底层原理|内存办理【Mach-O文件、Tagged Pointer、目标的内存办理、copy、引证计数、weak指针、autorelease

3. 根据Swift语言探求iOS底层原理

关于函数枚举可选项结构体闭包特点办法swift多态原理StringArrayDictionary引证计数MetaData等Swift根本语法和相关的底层原理文章有如下几篇:

  • 01-Swift5常用中心语法|了解Swift【Swift简介、Swift的版别、Swift编译原理】
  • 02-Swift5常用中心语法|根底语法【Playground、常量与变量、常见数据类型、字面量、元组、流程操控、函数、枚举、可选项、guard语句、区间】
  • 03-Swift5常用中心语法|面向目标【闭包、结构体、类、枚举】
  • 04-Swift5常用中心语法|面向目标【特点、inout、类型特点、单例形式、办法、下标、继承、初始化】
  • 05-Swift5常用中心语法|高档语法【可选链、协议、过错处理、泛型、String与Array、高档运算符、扩展、访问操控、内存办理、字面量、形式匹配】
  • 06-Swift5常用中心语法|编程范式与Swift源码【从OC到Swift、函数式编程、面向协议编程、响应式编程、Swift源码剖析】

4. C++中心语法

  • 01-C++中心语法|C++概述【C++简介、C++来源、可移植性和标准、为什么C++会成功、从一个简略的程序开端认识C++】
  • 02-C++中心语法|C++对C的扩展【::效果域运算符、姓名操控、struct类型加强、C/C++中的const、引证(reference)、函数】
  • 03-C++中心语法|面向目标1【 C++编程标准、类和目标、面向目标程序设计事例、目标的结构和析构、C++面向目标模型初探】
  • 04-C++中心语法|面向目标2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转换、 C++标准、过错&&异常、智能指针
  • 05-C++中心语法|面向目标3【 继承和派生、多态、静态成员、const成员、引证类型成员、VS的内存窗口】

5. Vue全家桶

  • 01-Vue全家桶中心常识|Vue根底【Vue概述、Vue根本运用、Vue模板语法、根底事例、Vue常用特性、归纳事例】
  • 02-Vue全家桶中心常识|Vue常用特性【表单操作、自定义指令、核算特点、侦听器、过滤器、生命周期、归纳事例】
  • 03-Vue全家桶中心常识|组件化开发【组件化开发思维、组件注册、Vue调试东西用法、组件间数据交互、组件插槽、根据组件的
  • 04-Vue全家桶中心常识|多线程与网络【前后端交互形式、promise用法、fetch、axios、归纳事例】
  • 05-Vue全家桶中心常识|Vue Router【根本运用、嵌套路由、动态路由匹配、命名路由、编程式导航、根据vue-router的事例】
  • 06-Vue全家桶中心常识|前端工程化【模块化相关标准、webpack、Vue 单文件组件、Vue 脚手架、Element-UI 的根本运用】
  • 07-Vue全家桶中心常识|Vuex【Vuex的根本运用、Vuex中的中心特性、vuex事例】

6. 音视频技能中心常识

  • 01-音视频技能中心常识|了解音频技能【移动通信技能的开展、声音的实质、深化了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的装备、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【命令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用命令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显示BMP图片、显示YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

其它底层原理专题

1. 底层原理相关专题

  • 01-核算机原理|核算机图形烘托原理这篇文章
  • 02-核算机原理|移动终端屏幕成像与卡顿

2. iOS相关专题

  • 01-iOS底层原理|iOS的各个烘托结构以及iOS图层烘托原理
  • 02-iOS底层原理|iOS动画烘托原理
  • 03-iOS底层原理|iOS OffScreen Rendering 离屏烘托原理
  • 04-iOS底层原理|因CPU、GPU资源耗费导致卡顿的原因和解决计划

3. webApp相关专题

  • 01-Web和类RN大前端的烘托原理

4. 跨渠道开发计划相关专题

  • 01-Flutter页面烘托原理

5. 阶段性总结:Native、WebApp、跨渠道开发三种计划性能比较

  • 01-Native、WebApp、跨渠道开发三种计划性能比较

6. Android、HarmonyOS页面烘托专题

  • 01-Android页面烘托原理
  • 02-HarmonyOS页面烘托原理 (待输出)

7. 小程序页面烘托专题

  • 01-小程序结构烘托原理