现在音视频如此火爆,作为一枚专业的程序媛哪能不懂音视频的开发呢,所以踏上了音视频研究之路。对于ios来说音视频编解码主要有两种编解码框架FFmpeg和苹果ios8以后开放的VideoToolBox,FFmpeg是基于CPU进行编解码的,俗称软编码,而VideoToolBox是基于GPU进行编解码的,俗称硬编码。这里我主要研究的是苹果开放的VideoToolBox。天小编给大家带来音视频
为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:687528266,点击链接加入群聊【iOS软件开发学习交流】:https://jq.qq.com/?_wv=1027&k=5wrTEZx不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长! 专业术语 1.低码率(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩的数据量只有MPEG2的1/8 、MPEG4的1/3。
2.高质量的图像: H.264能提供连续、流畅的高质量图像(DVD质量)
3.容错能力强: H.264提供了解决在不稳定网络下容易发生丢包等错误的必要工具。
4.网络适应能力强: H.264提供了网络抽象层(Network Abstraction Layer),使得H.264的文件能容易地在不同的网络上传输(例如互联网、CDMA、GPRS、WCDMA、CDMA2000等)。
5.高压缩率,H.264的压缩比达到惊人的102:1。
一.音频基础复习
1.1 声音的产生
相对于视频,可观察这个现象.音频在学习过程,就缺乏了想象的空间.但是如果从原理出发,就不会那么难了.
声音是什么?
声音是波,靠物体的振动产生 1.2 声波的3要素
声波的三要素,是频率,振幅,波形.频率代表音阶的高低,振幅代表响度,波形则代表音色.
频率越高,波长就会越短.而低频声响的波长则较长.所以这样的声音更容易绕过障碍物,能量衰减就越小.声音就会传播的越远. 响度,就是能量大小的反馈.用不同的力度敲打桌面,声音的大小势必发生变换.在生活中,我们用分贝描述声音的响度.
声音分贝参考图 ==小贴士==
分贝(decibel),是度量声音的强度单位,常用dB表示.是由美国发明家亚历山大.格雷厄姆.贝尔 名字命名的.长期在夜晚接受50 分贝的噪音, 容易导致心血管疾病; 55 分贝, 会对儿童学习产生负面影响; 60分贝, 让人从睡梦中惊醒; 70 分贝,心肌梗死的发病率增加30%左右; 超过110 分贝, 可能导致永久性听力损伤.
音色,在同样的频率和响度下,不同的物体发出的声音不一样.比如钢琴和古筝声音就完全不同.波形的形状决定了声音的音色.因为不同的介质所产生的波形不同.就会产生不一样的音色. 1.3 声音传播
声音的发生,来源于振动.人类说话,从声带振动发生声音之后,经过口腔,颅腔等局部区域的反射,在经过空气传播到别人耳朵中.这是我们说话到听到的过程. 声音的传播,可以通过空气,液体,固定传播.介质不同,会影响声音的传播速度. 吸音棉:通过声音反射而产生的嘈杂感,吸音材料选择使用可以衰减入射音源的反射能量,从而对原有声音的保真效果.比如录音棚墙壁上就会使用吸音材质 隔音:主要解决声音穿透而降低主体空间的吵闹感,隔音棉材质可以衰减入射声音的透射能量.从而达到主体空间安静状态,比如KTV墙壁上就会安装隔音棉材料. 二.数字音频
2.1 模拟信号数字化过程
将模拟信号转换为数字信号的过程,分别是采样,量化和编码.
音频采样
对模型信号进行采样,采样可以理解为在时间轴上对信号进行数字化.
而,根据奈斯特定理(采样定理),按比声音最高频率高2倍以上的频率对声音进行采样.这个过程称为AD转换.
比如,前面提到高质量音频信号,其频率范围是20Hz-20KHz.所以采样频率一般是44.1KHz.这样可以保证采样声音达到20KHz也能被数字化.而且经过数字化处理后的声音,音质也不会降低.44.1KHZ,指的是1秒会采样44100次
奈斯特定理(采样定理) 资料
量化
量化,指的是在幅度轴上对信号进行数字化.简单的说,就是声音波形的数据是多少位的二进制数据,通常用bit做单位.比如16比特的二进制信号来表示声音的一个采样.它的取值范围[-32768,32767].一共有65536个值.如16bit、24bit。16bit量化级记录声音的数据是用16位的二进制数,因此,量化级也是数字声音质量的重要指标。我们形容数字声音的质量,通常就描述为24bit(量化级)、48KHz采样,比如标准CD音乐的质量就是16bit、44.1KHz采样.
声音量化
既然每个量化都是一个采样,那么声音这么多采样,该如何将这些数据存储起来?
三.编码
3.1 什么叫编码?
按照一定格式记录采样和量化后的数据.
音频编码的格式有很多种,而通常所说的音频裸数据指的是脉冲编码调制(PCM)数据.
如果想要描述一份PCM数据,需要从如下几个方向出发:
量化格式(sampleFormat)
采样率(sampleRate)
声道数(channel) 3.2 编码篇
这里我主要是对我学习视频编码做一个整理记录,技巧只有一个就是多看多写,不懂就查:
雷神音视频基础入门
音频与视频基本原理
3.H264(NAL简介与I帧判断)
4.移动直播技术秒开优化经验
必须全都看一遍这样对视频编解码有了一个大概的了解,还有对一些关键字的了解 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别
5.[如何快速的开发一个完整的iOS直播app(原理篇)(http://www.cnblogs.com/Amoyios/p/5832953.html)
掌握了一定的基础知识后 就是理论结合实际啦,代码链接地址音视频编解码代码 以上都是纯理论只是现在进入真正的代码解析根据博客
1.使用VideoToolbox硬编码H.264
2.VideoToolBox基本函数使用