音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号,通过音频编码,变成音频数字信号保存到某种格式文件里.在播放过程中在对音频文件解码,解码出的信号通过扬声器等设备就能够转成音波.音频文件在编码的过程中数据量非常大,所以有的文件格式对于数据进行了压缩,因此音频文件能够分为:

无损格式,是非压缩数据格式,文件非常大一般不适合移动设备,比如:WAV,AU,APE等文件

有损格式,对于数据进行了压缩,压缩后丢掉了一些数据,比如MP3,WMA等文件.

1.WAV文件

WAV文件眼下是最流行的无损压缩格式,WAV文件格式灵活,能够存储多种类型的音频数据,因为文件较大不太适合于移动设备这些存储容量小的设备

2.MP3文件

MP3格式如今很流行,MP3是一种有损压缩格式,他尽可能地去掉人耳无法感觉的部分和不敏感的部分,MP3是利用MPEG Audio Layer 3的技术将数据以1:10甚至1:12的压缩率,压缩成容量较小的文件,这么高的压缩比率很适合存储容量小得移动设备

3.WMA文件

WMA格式是微软公司公布的文件格式,也是有损压缩格式.它与MP3格式不分伯仲.在低比特率渲染情况下,WMA格式显示出来比MP3很多其它的长处,压缩比MP3更高,音质更好.可是在高比特率渲染情况下MP3还是占优势.

4.CAFF文件

CAFF文件是苹果公司开发的专门用于MAC OS X 和iOS系统无法所音频格式.它被设计来替换老的WAV格式

5.AIFF

AIFF文件是苹果开发的专业音频文件格式.AIFF的压缩格式是AIFF-C,将数据以4:1压缩率进行压缩,专门应用于MAC OS X 和 iOS系统.

语音合成

AVSpeechUtterance *utt = [AVSpeechUtterance speechUtteranceWithString:@"test 文本"];
utt.rate = [self.slider value];
[self.speechSynthesizer speakUtterance:utt];

System Sound API

System Sound API是属于core Audio中属于面向c语言的次层次API(书上是这么说,但看代码应该是包括了AudioToolbox)

播放系统声音

播放系统声音主要使用AudioServicesPlaySystemSound函数进行播放,主要用于游戏音效和操作声音等.他的工作流程大致是:

1.播放前的准备阶段:使用AudioServicesCreateSystemSoundID函数创建SystemSoundID,然后使用AudioServicesAddSystemSoundCompletion注销声音播放完毕事件回调函数.

2.播放阶段:使用AudioServicesPlaySystemSound播放声音实现.

3.播放后的处理阶段:释放资源,注销事件回调函数,这包含了使用AudioServicesDisposeSystemSoundID函数释放SystemSoundID和使用AudioServicesRemoveSystemSoundCompletion注销声音播放完毕事件回调函数.

//定义一个回调函数。用于当声音播放完毕之后回调。
void SoundFinishedPlayingCallback(SystemSoundID sound_id, void* user_data)
{
//注销声音播放完毕事件回调函数。
AudioServicesRemoveSystemSoundCompletion(sound_id);
//释放SystemSoundID
AudioServicesDisposeSystemSoundID(sound_id);
} @implementation ViewController - (IBAction)playSystemSound:(id)sender {
NSURL* system_sound_url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"AlertChordStroke" ofType:@"wav"]]; SystemSoundID system_sound_id; //创建SystemSoundID
AudioServicesCreateSystemSoundID(
(CFURLRef)CFBridgingRetain(system_sound_url),
&system_sound_id
); //注销声音播放完毕事件回调函数。 AudioServicesAddSystemSoundCompletion(
system_sound_id,
NULL,
NULL,
SoundFinishedPlayingCallback,
NULL
); //播放系统声音
AudioServicesPlaySystemSound(system_sound_id); }

震动设备

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

OpenAL

播放声音的流程

1.获得设备信息

2.获得环境信息

3.初始化缓冲区

4.初始化声援

5.将缓冲区和声源绑定

6.初始化听众

7.播放

8.释放内存

初始化缓存的过程

1.打开文件

2.获得实际音频文件大小

3.开辟音频内存数据空间

4.读取的文件到内存中

5.关闭文件

6.从OpenAL中获得缓冲区ID

7.内存中音频数据拷贝到缓冲区

8.清除内存中音频数据

<图形图像,动画,多媒体> 读书笔记 --- 音效的更多相关文章

  1. <图形图像,动画,多媒体> 读书笔记 --- AirPlay

    AirPlay技术是之前一直没有接触过的技术,正好这次做一个笔记 共用: 1.能够通过AirPlay将iOS和MAC设备上的视频或音频输出到高清电视上或高保真音响 2.能够通过AirPlay将iOS和 ...

  2. <图形图像,动画,多媒体> 读书笔记 --- 力学行为特性

    UIKit力学行为包括了:重力(UIGravityBehavior),碰撞(UICollisionBehavior),吸附(UIAttachmentBehavior),推(UIPushBehavior ...

  3. <图形图像,动画,多媒体> 读书笔记 --- 录制与编辑视频

    使用UIImagePickerController 进行录制 #import "ViewController.h" #import <MobileCoreServices/M ...

  4. iOS 图形图像动画 Core Animation

    //Core Animation #define WeakSelf __weak __typeof(self) weakSelf = self #define StrongSelf __strong ...

  5. 《Java并发编程实战》第九章 图形用户界面应用程序界面 读书笔记

    一.为什么GUI是单线程化 传统的GUI应用程序通常都是单线程的. 1. 在代码的各个位置都须要调用poll方法来获得输入事件(这样的方式将给代码带来极大的混乱) 2. 通过一个"主事件循环 ...

  6. 关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了

    关东升的<iOS实战:图形图像.动画和多媒体卷(Swift版)>上市了 承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提 ...

  7. WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形

    原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...

  8. WPF,Silverlight与XAML读书笔记第四十三 - 多媒体支持之文本与文档

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. Glyphs对象(WPF,Silverlig ...

  9. 《android开发艺术探索》读书笔记(七)--动画

    接上篇<android开发艺术探索>读书笔记(六)--Drawable No1: 自定义动画:派生一种新动画只需要继承Animation这个抽象类,然后重写它的initialize和app ...

随机推荐

  1. Dubbo的一些编码约定和设计原则

    编码约定 代码风格 Dubbo 的源代码和 JavaDoc 遵循以下的规范: Code Conventions for the Java Programming Language How to Wri ...

  2. verilog语法实例学习(3)

    Verilog 操作运算符 算术运算符 +,-,*,/,**(加/减/乘/除/幂运算),乘法运算的结果的位宽是乘数和被乘数位宽的和. 在进行整数的除法运算时,结果要略去小数部分,只取整数部分:而进行取 ...

  3. go语言之进阶篇借助bufio实现按行读取内容

    1.借助bufio实现按行读取内容 示例: package main import ( "bufio" "fmt" "io" "o ...

  4. Focal Loss(RetinaNet) 与 OHEM

    Focal Loss for Dense Object Detection-RetinaNet YOLO和SSD可以算one-stage算法里的佼佼者,加上R-CNN系列算法,这几种算法可以说是目标检 ...

  5. LeetCode 114| Flatten Binary Tree to Linked List(二叉树转化成链表)

    题目 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解析 通过递归实现:可以用先序遍历, ...

  6. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  7. 【ElasticSearch】ES5新特性-keyword-text类型-查询区别

    ES5新特性-keyword-text类型-查询区别 elasticsearch-head Elasticsearch-sql client junneyang (JunneYang) es keyw ...

  8. Mahout 安装配置

    http://log.medcl.net/item/2011/02/mahout_install/ Apache Mahout是一个机器学习的框架,构建在hadoop上支持大规模数据集的处理,目前最新 ...

  9. 如何在原生工程中引入Cordova工程-for iOS 【转】

    http://blog.csdn.net/e20914053/article/details/50170487 如今混合开发方兴未艾,有的项目可能一开始是原生开发的,后期需要加入混合开发,如将Cord ...

  10. Centos配置为驱动程序开发环境

    安装完centos后,写了一个驱动测试程序Hello.编译过程出现如下错误: make: *** /lib/modules/2.6.32-220.4.1.el6.i686/build: No such ...