iOS直播类APP开发流程解析

2020-01-15 19:19:16于海丽

 四、根据所选流媒体协议封包音视频数据
 将音频,视频打包成packet。 

五、与服务器交互发送封包数据
根据所选流媒体协议,发送相应指令连接服务器,连接服务器成功后,就可以发送packet数据了。 
Part 2. 拉流端 
拉流,就是从流媒体服务器获取音频,视频数据。 
一)、解析协议 
播放器端根据URL解析所用的流媒体协议(RTMP,HLS)。 
二)、解封装 
解封装,就是demux的过程,从容器格式(FLV,TS)中,分离出音视频数据。 
三)、解码 
解码,就是把获取到的数据解压缩,恢复成原始数据。解码就是将H264变成YUV,AAC变成PCM。 
解码可以使用软解码,硬解码。 
软解码就是利用CPU资源去解压缩数据,采用的方式是FFmpeg解码。 
硬解码,对于iOS平台来说,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统使用)
硬解码视频数据。Android平台上,可以使用MediaCodec来硬解码视频数据。 
四)、渲染数据 
采用OpenGL渲染YUV数据,呈现视频画面。将PCM送入设备的硬件资源播放,产生声音。 
iOS播放流式音频,使用Audio Queue 的方式,即,利用AudioToolbox.Framework 框架。

三、 iOS开发之iOS直播平台有用的第三方资源共享: 
1.  实时美颜参考网址:http://www.easck.com/> HLS:http://www.easck.com/live/hongkong.m3u8 凤凰卫视香港台 
SMTP:rtmp://live.hkstv.hk.lxdns.com/live/hks 香港卫视 
RSTP:rtsp://rtsp.vdowowza.tvb.com/tvblive/mobileinews200.stream 互动新闻台1 
3.  HLS streaming工具下载,用于处理m3u8音、视频源的HLS Streaming Tool Download
4. 直播相关SDK
1). VideoCore 在新浪云上有文档说明,可阅读iOS推流SDK使用文档
2). 网易云信直播SDK 好像是收费的,价格还不便宜,一般公司可能也不会用,不过可以尝试看看,了解一下,有助于学习!
3). 暴风云直播   http://www.easck.com/apisdk/sdk/live/iossdk.html
4). 融云直播     http://www.easck.com/live
5). 腾讯直播SDK  https://www.easck.com/solution/video.html

5. 直播相关开源库
1). BeautifyFaceDemo 基于GPUImage的图片处理,做美颜方面可以参考一下
2).   lf.swift 开源RTMP Swift版的,可以学习一下!好像作者是日本的,或者是在日本工作的,写了不少日文!
3).  PLPlayerKit 一个不依赖FFmpeg的播放器,支持RTMP
4).  HLS-Demo   https://www.easck.com//github.com/daniulive/SmarterStreaming  直播SDK(支持私有协议和RTMP推流,如windows推流/android推流/iOS推流/windows播放器/android播放器/iOS播放器)