swift- -07

软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低

性能高,对CPU没有压力,但是对其他硬件要求较高(如GPU等)

硬编码 Gpu等非cpu编码   用 VideoToolBox框架

编码流程: 采集--> 获取到视频帧--> 对视频帧进行编码 --> 获取到视频帧信息 --> 将编码后的数据以NALU方式写入到文件

编码方式:H.264编码

帧率:每秒钟多少帧画面

码率:单位时间内保存的数据量

关键帧(GOPsize)间隔:多少帧为一个GOP

swift- -07_第1张图片

当编码成功后,将编码后的码流写入文件

编码成功后会回调之前输入的函数

1> 先判断是否是关键帧:

如果是关键帧,则需要在写入关键帧之前,先写入PPS、SPS的NALU

取出PPS、SPS数据,并且封装成NALU单元,写入文件

2> 将I帧、P帧、B帧分别封装成NALU单元写入文件

写入后,数据存储方式:


swift- -07_第2张图片

硬解码

软编码 

软编码主要是利用CPU进行编码的过程, 具体的编码通常会用FFmpeg+x264

iOS项目中集成FFmpeg

将编译好的文件夹拖入到工程中添加依赖库: libiconv.dylib/libz.dylib/libbz2.dylib/CoreMedia.framework/AVFoundation.framework

FFmpeg编码两个重要的类

AVFormat

保存的是解码后和原始的音视频信息

AVPacket

解码完成的数据及附加信息(解码时间戳、显示时间戳、时长等

软解码---用到openGl  把解码的数据用openGl渲染出来

01-(掌握)FFmpeg介绍和Mac下使用

07-(掌握)服务器-购买

08-(掌握)服务器-搭建配置

09-(掌握)服务器-HLS支持

04-LFLiveKit-----推流框架(直接能获取到相机)----推到服务器(服务器地址)

05-kxMovie的使用(1.服务器推流    2.kxMovie获取地址进行播放 3.基于FFmpeg)

06-IJKPlayer的使用(1.服务器推流    2.IJKPlayer获取地址进行播放)

07-HelloOpenGL-----渲染画面用的

你可能感兴趣的:(swift- -07)