IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE...
本文转载至 http://blog.csdn.net/u014011807/article/details/40187737
在本卷你可以学到什么?
采用四种方法设计应用于各种场合的音频播放器:
基于AudioToolbox.framework框架。播放系统声音文件。
基于AVFoundation.framework框架。播放多种音频格式文件。具有高级音频播放器功能。如实时显示进度、功率,控制音量、播放时间等。
基于OPENAL框架。实现对本地音频文件播放,播放pcm音频文件,3D音频特效。
基于AUDIOQUEUE音频队列。实现对音频信号流播放。可以分段提取音频流数据。
利用FFMPEG完成对音频信号编解码,如wav、mp3等音频文件类型。
结合Matlab仿真软件实现特殊音效处理。如汤姆猫音频。
利用SOUND TOUCH开源库,实现各种高级音频处理。如男声变女声。
iOS多媒体层结构概述
IOS从体系结构上一般可以分为四个层次,如图1所示。分别是Cocoa 触摸框架层(theCocoa Touch layer)、媒体层(the Media layer)、核心服务层(the Core Services layer)、核心操作系统(the Core OS layer)。
手机带给用户的直接体验无外乎音频、图像、视频。因而多媒体层在整个IOS的体系结构中扮演着非常重要的角色。利用IOS提供的音频、图像、视频框架可以帮助IOS开发人员快速的完成客户提出的高级音视频动画体验。同时这些框架也为开发人员访问底层结构提供了一条便捷之路。下面分别就音频、图像、视频三个方面介绍多媒体层的构成情况。
音频技术层:
音频技术层设计到的框架主要有:AVFoundation.framework、CoreAudio.framework、AudioToolbox.framework、AudioUnit.framework、OpenAL.framework 等。每个技术层都包含了众多的framework框架,而每一种框架中又有各种OC类的方法。在这里我们选择几种较为重要的类向大家介绍一下。
AVFoundation.framework:
AVFoundation.framework是音频技术层中非常重要的一个层,利用其包含的众多OC方法可以很方便的定制各种音频播放器,并实现一些高级功能。AVFoundation可以播放系统中声音文件以及原始音频数据。当然利用此框架还可以实现声音的混叠效果,同时控制多个音频文件的播放。
CoreAudio.framework:
主要用于定制各种音频的数据类型。
AudioToolbox.framework:
可以播放或者录制音频文件。同时还可以对原始音频数据文件进行操作。经过一定的设置还可以实现震动等效果。
OPEN AL.framework:
Open al( Open Audio Library)是一项跨平台的音频处理方案。通过此框架可以方便的实现各种音频文件的播放。同时还可以实现对pcm音频文件的播放。尤其是在3D音效技术中,具有非常重要的作用。通过此技术可以很方便的在游戏以及一些特殊的场合实现3D音频特效。
IOS音频技术层可以播放各种音频格式的音频文件,同时也可以播放已经定制安装相应音频编解码器的音频文件。具体来说主要支持以下几种音频文件:
WAV:WAV是微软公司开发的一种音频格式,它几乎没有对采集的数字音频信号进行失真处理,因此可以很好的还原声音的原始信息。
MP3:是今年来最流行的音频处理算法,它在不对音质造成太大影响的情况下最大限度的压缩了数据的大小。
AAC:AAC音频文件的全称是Advanced Audio Coding,采用和mp3完全不同的数据压缩算法,相较于mp3来说具有更高的性价比,音质较好。
Caf:ios设备录音时经常存储的一种音频文件类型。
……
图像技术层:
图像处理是视频处理的基础,同时也是人们视觉体验种非常重要的部分。图像技术层设计到的技术主要有:Core Graphics、Core Animation、Image I/O、OpenGL ES等。正是由于图像技术层提供了这些众多的工具,才能使得我们方便的对图像进行处理。下面我们简单介绍一下每种技术的作用。
Core Graphics:
Core Graphics(CoreGraphics.framework)主要利用Quartz2D实现对二维图像的处理,因此也经常将其称之为Quartz 2D技术。
Core Animation:
与二维图像处理相对应,Core Animation主要应用于二维动画的制作,以及一些高级高级视觉效果的渲染。
Image I/O:
Image I/O(ImageIO.framework)可以看出是图像的输入输出管理,可以利用此框架处理图像的基本像素信息。该框架的使用是建立在 Core Graphics数据类型和函数之上的。
OpenGL ES:
OpenGL ES(OpenGLfor Embedded Systems)是Open Gl专门针对嵌入式操作系统量身定制的。提供完备的2d、3d图像处理API,功能非常强大。是游戏图像、高清图像的首先技术方案。
IOS兼容多种图像格式,如常用的png、jpeg、bmp等都有很好的支持。
视频技术层:
目前3G在国内已经基本普及,而由此带来的高速率视频下载、花哨的视频分享已成为ios系统的一个重要特点。为了方便开发人员可以方便定制自己个性的播放器,ios提供了众多视频应用框架。Media play.framework
Media play.framework:
Media play.framework可以看作是一款高级视频播放器的框架,利用此框架你可以快速的设计出一个视频播放器。但缺点是不方便用户在上面进行二次开发。
ios可以播放多种视频类型文件,如mp4、m4v、3gp、mov等。
转载于:https://www.cnblogs.com/Camier-myNiuer/p/5527960.html
IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE...相关推荐
- ios页面间传递参数四种方式
ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...
- IOS数据本地存储的四种方式--
注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到 ...
- 解决存储过程中数据安全问题的四种方式
随着科技的不断发展,数据量也正在呈指数倍的增加.在这样一个大背景下,存储产品成为了时下市场中最热的产品.而数据的安全性也变得尤为重要.后端存储已经逐渐成为企业业务系统的核心和关键. 一般而言,我们有四 ...
- android java 多线程,Android多线程的四种方式
当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在 ...
- Linux C++多线程同步的四种方式
目录 一.互斥锁 二.条件变量 三.读写锁 原文链接:Linux C++多线程同步的四种方式(非常详细)_Y先森0.0-CSDN博客 背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通 ...
- angular cli 切换 css_漫谈 Angular 定制主题的四种方式
主题定制是提升用户体验最常见的一种,前端框架众多,主题定制方式却异曲同工,下面来介绍一下 Angular 中实现主题定制的四种方式. 1. webpack loader React 版本的 Ant D ...
- photon四种同步方式_【Linux】多线程同步的四种方式
背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通过多线程模拟多窗口售票为例: #include #include#include#include#include#include us ...
- Bootstrap4+MySQL前后端综合实训-Day01-PM【position定位的四种方式、Flex布局语法教程及案例(概念、容器属性、项目属性)、双飞翼布局复习、Bootstrap4 教程】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目 录 HTML中的三种元素(块元素.内联元素.内联块元素) position定位的四种方式 ...
- php解析url并得到url中的参数及获取url参数的四种方式
本文给大家介绍php解析url并得到url中的参数及获取url参数的四种方式,涉及到将字符串参数变为数组,将参数变为字符串的相关知识,本文代码简单易懂,感兴趣的朋友一起看看吧 下面一段代码是php解析 ...
- jdbc Template 介绍和 spring 链接数据源的四种方式
为什么具体讲template介绍和spring jdbc链接数据源的几种方式放在一起介绍,在于你在使用template的时候,具体配置数据源,或者在链接配置数据源的时候要是使用template,就在在 ...
最新文章
- Linux基础命令---su
- 对话框界面编程的一些经验总结
- Struts2-2.了解struts.xml的查找顺序
- YBTOJ:采矿战略(线段树维护dp、树链剖分)
- python wordpress建站_WordPress快速建站
- C ++ 数组 | 寻找最大、最小值,数组(Array)_1
- 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
- 如何快速制作短视频?拥有这个神器,轻松搞定!
- android实战技巧,实战技巧:Android异步指南
- 公务员学python有什么用_关于大龄中年学python的几点想法
- SPOJ-SUBST1 New Distinct Substrings (求不同子串数量)(后缀数组模板)
- c语言五子棋中怎么设置开局,五子棋开局口诀_五子棋常用的开局方式
- java cropper 上传_基于cropper.js的图片上传和裁剪
- Jsckson 实现 java 对象与 JSONObject 和 JSONArray 互转
- FormulaR1C1是EXCEL中单元格公式输入方法(补充解说)
- Nginx Window假死状态
- angular数据绑定
- LODOP.ADD_PRINT_TEXT 参数解释说明
- elementUI tooltip箭头样式(表格自定义)
- Lombok使用@Data的大坑,空指针错误