AVFoundation 简介

AVFoundation能做什么

AVFoundation 提供了 iOS 基本的音视频处理,包括播放,采集,编辑处理
一 播放
基本流程 : 文件(本地/远程)路径 -> 资源对象(AVAsset) -> iteam(AVPlayerIteam) -> 播放器(AVPlayer / AVAudioPlayer)
AVAudioPlayer作为音频播放器播放音频的时候只能播放本地资源
AVPlayer播放视频的时候需要指定播放图层AVPlayerLayer
二 采集
基本流程: 采集音视频资源的时候,核心在于采集会话AVCaptureSession,指定输入(AVCaptureDeviceInput)和输出,输出(AVCaptureOutput) , 拍照(AVCapturePhotoOutput),输入对象须要输入设备创建,音频输入需要指定音频输入设备为麦克风,视频输入需要指定前/后摄像头,输出可以是文件输出(AVCaptureFileOutput),指定输出文件路径,采集资源后写到指定文件,或者数据输出,数据输出分为音频数据输出(AVCaptureAudioDataOutput),视频数据输出(AVCaptureVideoDataOutput),数据输出须实现AVCaptureVideoDataOutputSampleBufferDelegate代理方法,取到输出的每一帧音视频帧,然后使用AVAssetWriter写到文件,输出Data取到每一帧数据所以可以对音视频数据有更多的控制(码率,帧率,编码格式,封装格式等)
采集数据的时候也需要给会话指定一个预览图层(AVCaptureVideoPreviewLayer),当启动会话的时候,数据会在预览图层显示,当开始写数据的时候,才会把数据写到具体文件
三 编辑和处理: AVfoundation还可以对视频进行编辑媒体片段,参数修改音视频参数,获取视频帧(AVAssetImageGenerator),导出(AVAssetExportSession)等操作;


了解数字媒体资源

信号分为数字信号和模拟信号,为了便于在互联网传输和使用,需要把模拟信号经过采样,量化得到数字信号

  • 采样
    数字化主要有两种方式,时间采样,空间采样
    时间采样:捕获一个信号一段时间内的变化
    空间采样:一般用于可视资源数字化的数字化,对一帧图片在一定分辨率下的亮度和色度的捕获
    在视频资源数字化的时候,这两种方法都会用到
    音频采样:平时听到的声音是一个连续的信号,以波的方式经过介质传递到人耳引起鼓膜震动在通过听觉神经把信号传递到人脑特定区域从而听到声音,声音有三个基本要素:频率,振幅,音色,频率决定声音的尖锐程度,频率越高声音约尖锐,传播过程中能量损耗越大传播距离越近,振幅决定声音的响度,声音在不同的介质中传播会与介质震动的杂波混合而表现出不同的音色
    由于人耳只能听到20 Hz ~ 20kHz频率范围内的声音,根据奈奎斯特采样定理,采样率大于最高频率 2 倍以上就能完美还原原信号,所以大多音频资源的采样率为 41kHz
    音频数字化包括一个编码方法:脉冲编码调制(LPCM),数字化过程中包含几个关键属性:
    采样率:单位时间内按固定间隔读取几个音频信号,采样率越高,对原信号的描述越准确,同时数据量越大.
    位元深度:一个采样点的数据使用几位二进制数字表示,位元深度越大对采样点描述越准确,同时数据量越大
    视频帧采样:视频由一张张的图片和音频组成,一张图片就是一帧,根据人眼视觉残留特性,每秒只要展示超过 25 帧的图片就能产生流畅的视觉效果,但是连贯的视频帧有大量信息是重复的,为了便于传输和节省内存空间,需要对视频帧进行压缩处理.
  • 色彩二次抽样
    一个视频资源由大量视频帧组成,每一帧视频由大量像素点组成,每个像素点由RGB颜色组成,由于人眼对亮度的敏感度高于色度,所以通常使用YUV颜色模式来表示颜色,亮度色度的比例称为色度值写作 j:a:b 格式:
    j:表示几个关联色块包含的像素数,通常为 4
    a:第一行每个j像素的色度个数
    b:第二行每个j像素的附加像素个数
    常见的有 4:2:0,4:2:2,4:4:4.更多详细信息看这里
    编码压缩
    常见的视频压缩器为H264 / H265:
    包括针对空间的帧内压缩和时间的帧间压缩
    I 帧:关键帧,包含创建图片所需的所有数据,每个GOP有一个I-frame,占用数据量大,解码时间短
    P 帧:预测帧,由最近的I 帧或者 P 帧的可预测数据编码得到,包含数据少,解码时间长
    B 帧:双向帧,基于之前和之后的帧信息编码后得到,占用空间小,解码时间长
    更多详细H264相关看这里
    常见的音频编码器为AAC;AACH264标准对应的音频处理方式,可以在低比特率下得到更高质量的音频.更多AAC相关详细信息看这里

你可能感兴趣的:(AVFoundation 简介)