音视频相关

音视频处理

音视频采集: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系统端:小端

你可能感兴趣的:(音视频相关)