一、前言
本系列文章是对音视频技能入门常识的收拾和复习,为进一步深化体系研究音视频技能稳固根底。文章列表:
- 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. 直播架构
下面放几张图片,简略了解一下直播技能的根本架构。
- 简略
- 具体
你或许会有个疑问:信令服务器是干嘛用的?用来处理共享端和观看端的一些信令指令,比方创立房间、加入房间等。
- 京东云
- 百度智能云
用文字总结一下根本流程是:
- 共享端(比方主播) -> 产生音视频 -> 编码压缩音视频 ->推流到服务器
- 观看端(比方观众) -> 从服务器拉流-> 解码解压缩音视频 -> 播映音视频
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体系中装置nginx、nginx-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; } } }
-
vim conf/nginx.conf
- 装备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多态原理
、String
、Array
、Dictionary
、引证计数
、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-小程序结构烘托原理