1 音视频的采集,ios 中,利用 AVCaptureSession和AVCaptureDevice 可以采集到原始的音视频数据流。

2 对视频进行 H264 编码,对音频进行 AAC 编码,在 ios 中分别有已经封装好的编码库来实现对音视频的编码。

3 对编码后的音、视频数据进行组装封包;

4 建立 RTMP 连接并上推到服务端。

ps:由于编码库大多使用 c 语言编写,需要自己使用时编译,对于 ios,可以使用已经编译好的编码库。

x264编码:https://github.com/kewlbear/x264-ios(复制此链接到浏览器打开)

faac编码:https://github.com/fflydev/faac-ios-build(操作同上)

ffmpeg编码:https://github.com/kewlbear/FFmpeg-iOS-build-script(操作同上)

关于如果想给视频增加一些特殊效果,例如增加滤镜等,一般在编码前给使用滤镜库,但是这样也会造成一些耗时,导致上传视频数据有一定延时。