iOS音视频开发-直播项目流程

456 阅读2分钟

直播APP需求剖析

直播项目流程

在直播项目中,一般常见有8个步骤.

  •   音视频采集

  •   视频滤镜

  •   音视频编码

  •   推流

  •   流媒体服务器处理

  •   拉流

  •   音视频解码

  •   音视频播放

image.png

  •   采集视频,音频

    -   使用iOS原生框架 AVFoundation.framework

  •   视频滤镜处理

    -   使用iOS原生框架 CoreImage.framework

    -   使用第三方框架 GPUImage.framework

CoreImageGPUImage 框架比较:\

在实际项目开发中,开发者更加倾向使用于GPUImage框架.\

首先它在使用性能上与iOS提供的原生框架,并没有差别;其次它的使用便利性高于iOS原生框架,最后也是最重要的GPUImage框架是开源的.而大家如果想要学习GPUImage框架,建议学习OpenGL ES,其实GPUImage的封装和思维都是基于OpenGL ES.\

GPUImage OC版本下载地址\

GPUImage Swift版本下载地址

  •   视频\音频编码压缩

    -   硬编码

        -   视频: VideoToolBox框架

        -   音频: AudioToolBox 框架

    -   软编码

        -   视频: 使用FFmpeg,X264算法把视频原数据YUV/RGB编码成H264

        -   音频: 使用fdk_aac 将音频数据PCM转换成AAC

  •   推流

    -   推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器

    -   推流技术

        -   流媒体协议: RTMP\RTSP\HLS\FLV

        -   视频封装格式: TS\FLV

        -   音频封装格式: Mp3\AAC

  •   流媒体服务器

    -   数据分发

    -   截屏

    -   实时转码

    -   内容检测

  •   拉流

    -   拉流: 从流媒体服务器中获取音频\视频数据

    -   流媒体协议: RTMP\RTSP\HLS\FLV

  •   音视频解码

    -   硬解码

        -   视频: VideoToolBox框架

        -   音频: AudioToolBox 框架

    -   软解码

        -   视频: 使用FFmpeg,X264算法解码

        -   音频: 使用fdk_aac 解码

  •   播放

    -   ijkplayer 播放框架

    -   kxmovie 播放框架

    > ijkplayer,kxmovie 都是基于FFmpeg框架封装的