音视频处理
音视频采集:AVFoundation
视频处理(美颜):视频本身就是图片,OpenGl ES/Metal、GPUImage/CoreImage(原生2014~2018过渡到metal)
一定要学会GPUImage(第三方库)
音视频压缩:格式:H264
推流服务器
服务器:CDN服务器
音视频播放:
1.获取数据(压缩过)
2.解码(2种,苹果本身的硬解码—GPU(效率十分高,推荐),FFmpeg)
3.解码:压缩的数据还原
4.显示(视频数据渲染到屏幕——ijkplayer/kxmovie——FFmpeg)
感兴趣:ijkplayer/kxmovie源码用OpenGL ES渲染
拓展:
为什么音视频开发要掌握 OpenGL?
答:显示,苹果底层/任何平台.渲染系统. 数据->屏幕可看到的内容
OpenGL / Metal GPU
为什么是基于GPU
答:CPU,多线程任务调度,时间片快速切换!CPU 多核
GPU,发挥优势!计算能力!有很多计算单元设计.并发运算
什么样的任务可以由GPU来执行
答:并发运算,依赖关系,能拆解!
比如,图片处理!图片显示的原理,像素填充颜色,每个像素怎么样添加颜色(OpenGL——片元着色器处理每个像素点颜色)
音视频的前提:
编码/解码 基本处理,具备的能力
OpenGL/Metal
帧:图片
压缩:
帧间压缩:针对单张图片本身来做压缩
帧内压缩:1s/30张图片,相同数据!一组图片对于相同的数据来做压缩
I/B/P:关键!压缩/解码的关键!
I帧:关键帧,保存一张完整图片,一组图片,只会保存一张完整的图片。做为解码依赖(帧内压缩)——第一张图片
P帧:间隔帧、向前参考帧,保存基于前面一张不同数据
B帧:双向参考帧,基于前后两帧的差别数据。
开发过程中:实时直播,干掉!丢弃掉!
原因:解码时需要等待
花屏:1/2,解码时,有一组GOP解码错误,解决:解码错误就丢弃,等待下一组数据传输来过去,再解码播放,会产生卡顿
音视频处理:
1:采集类——AVFoundation(推荐)
2:视频编码工具类
3:视频解码工具类
4:音频编码工具类
5:音频解码工具类
6:视频渲染工具类+直接滤镜处理——>不用第三方
7:音频播放工具类
H264标准
头:SPS/PPS(只有关键帧中) 获取数据!编码器给你
构造H264
间隔符+SPS+间隔符+PPS+NALU
大端/小端.
iOS系统端:小端
网友评论