www.jianshu.com/p/3d87fd102… blog.csdn.net/leixiaohua1…
首先放一张直播架构图
本文主要从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)
第九步:
播放,对音频数据和视频数据分别进行播放,同时做音视频同步