iOS浅谈播放器架构

2021-07-08  本文已影响0人  野码道人

主流业务场景协议与痛点

协议 传输方式 封装格式 延时 数据流 H5直播 应用场景
HLS http m3u8/ts 10s以上 ts切片 支持 直播拉流
RTMP tcp flv 2s左右 连续流 不支持 采集推流
HTTP-FLV http flv 2s左右 连续流 支持 直播拉流

系统自带播放器的局限性

播放器核心架构

FFMpeg裁剪包

解协议、解封装、解码

Buffer队列

因此需要根据不同业务场景配置相应的buffer策略

场景 策略模式 详情
秀场 流畅模式 正常缓存播放
语音房 加速模式 大于delaytime,倍速播放
IOT 低延时模式 大于delaytime,丢帧

音视频渲染

1、Metal支持的操作系统:iOS、macOS X
2、Metal的硬件要求:A7处理器,ARM64以上,就是iphone5s以上的机型,不支持x86
3、Metal支持的系统版本:Metal:iOS8,MetalKit:iOS9

因此需要支持模拟器和低版本的系统,需要实现两套方案,需要设计openGLES与Metal的适配器以供播放器控制自由切换

1、设置app是否与其他应用混音
2、手机静音app是否正常播放出声音
3、电话或其他应用抢占音频设备事件处理
4、动态切换音频路由
5、是否支持录音,录音同时是否支持播放

音频中断事件处理复杂,当中断发生时如果音频权限同时被修改会收不到中断恢复消息,从而导致音频播放卡住,因此需要程序回到前台统一处理

播放器状态机

播放器通用接口

上一篇 下一篇

猜你喜欢

热点阅读