音视频(一):直播点播架构

556 阅读1分钟

www.jianshu.com/p/3d87fd102… blog.csdn.net/leixiaohua1…

首先放一张直播架构图

4624551-9129a8b51add1a96.png

本文主要从IOS端出发,具体的细节及代码后面会写

第一步:

音视频采集:使用AVFoundation框架(苹果官方),FFmpeg框架(跨平台)

第二步:

视频美颜滤镜,滤镜使用OpenGL ES/Metal,GUPImage等,美颜使用face++等

第三步:

音频编码(目前主流是AAC编码),使用AudioToolbox(xcode自带)进行音频硬编码,使用FFmpeg内置的aac库或者第三方库faac(推荐)进行音频软编码

视频编码(目前主流是h264编码),使用VideoToolbox(xcode自带)进行视频硬编码,使用第三方库x264,x265(推荐)进行视频软编码

第四步:

封包,把编码后的音视频数据封装成FLV,TS,MKV等

第五步:

传输,如果是直播数据,需要使用RTMP等协议进行推流,如果是点播,需要做断点续传

第六步:

拉取数据

第七步:

拆包,把获取到的音频数据和视频数据拆分

第八步:

解码,音频数据进行和编码对应的硬解码(AudioToolbox)或软解码(aac或fdk-aac)

视频进行和编码对应的硬解码(VideoToolbox)或软解码(x264或x265)

第九步:

播放,对音频数据和视频数据分别进行播放,同时做音视频同步