- 浏览: 624431 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
AudioToolbox.framework框架学习
AudioFile
AudioFileStream类
提供了一个接口,用来解析一个流音频文件。
//创建一个new stream parse
AudioFileStreamOpen(self, AudioFileStream_PropertyListenerProc inPropertyListenerProc, AudioFileStream_PacketsProc inPacketsProc, AudioFileTypeID inFileTypeHint, AudioFileStreamID *outAudioFileStream);
//aquire some data
AudioFileStreamParseBytes(<#AudioFileStreamID inAudioFileStream#>, <#UInt32 inDataByteSize#>, <#const void *inData#>, <#UInt32 inFlags#>);
//设置从流文件中读取data时的offset
AudioFileStreamSeek(<#AudioFileStreamID inAudioFileStream#>, <#SInt64 inPacketOffset#>, <#SInt64 *outDataByteOffset#>, <#UInt32 *ioFlags#>);
//获取完数据后,关闭该流对象
AudioFileClose(<#AudioFileID inAudioFile#>)
AudioServices
AudioQueue
使用一个缓冲队列来存储data,用来播放或录音。播放或录音的时候,数据以流的形式操作,可以边获取数据变播放,或者边录音,边存储。
Resources:https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html
-------------------------------------------------------------------------
NSFileHandle 用来从文件、socket中读取数据
CFReadStream 用来读取一个字节流byte stream,该字节流可以来自于内存、一个文件、一个socket。在读bytes之前,流stream需要被打开。
CFWriteStream用来写一个字节流
AudioQueueRef 定义的一个不透明的数据类型,专门用来代表一个audio queue
AudioQueueBufferRef 是AudioQueueBuffer的别名,表明该参数为一个AudioQueueBuffer对象
AudioFileID 定义一个不透明的数据类型,代表一个audiofile的对象
反思:以ref结尾的对象名称,一般是在参数中使用,表明这个参数的数据类型
//===============
AudioStreamBasicDescription
音频数据流格式的描述.Callback Method 回调函数,系统规定好了回调函数的参数,以及调用的地方,你只需要保证参数的格式正确,向函数里添加代码即可,函数的方法名称可以随便写,没有强制的规定。
AudioQueueNewOutput的第三个参数:inUserData 这是由用户来自定义的,数据的来源。只需要传递一个对象进去即可。使用,当系统自动调用回调函数MyAudioQueueOutputCallback或者MyAudioQueueInputCallback时候,返回的第一个参数inUserData就是你在AudioQueueNewOutput中设置的第三个参数。然后,你需要在回调函数中使用这个对象填充buffer(播放音频,当一个buffer为空时自动调用)或者读取buffer的数据(录音,当一个buffer满时自动调用)。
AudioFileStream_PropertyListenerProc
当在audio stream中找到一个property value后,回调该方法。
AudioFileStream_PacketsProc当在stream中找到audio data后回调该方法。
在参数中的in和out个代表的意思:in代表的是这个参数需要你在外面得到然后传递进去,在这个方法中要使用;out开头的参数表示这个参数是这个方法返回的值,你一般只需要定义一个引用,然后传递进去,执行完这个方法后,这个参数就实例化了。oh,my god!坑爹的苹果。
AudioFile类
一个c编程接口,使用AudioFile可以从内存或硬盘中读取或写入多种格式的音频数据。
AudioFileStream类
提供了一个借口,用来解析流音频文件。功能:从网络中读取数据流,把数据流解析成音频文件。
音频文件流是不容易获取的。当需要从stream中读取data时,以前的data可能已无法使用,而新的data还没有到达,而从网络中获取的data可能还包含packets数据。为了解析audio stream,parser必须记着已经获取的数据,等待剩余的数据。
缓冲区是在哪设置的?
AudioQueue类
一个c编程接口,是Core Audio的一部分。功能:录音、播放音频。
AudioQueue类播放音频时,在内存中维护着一个buffer queue。只要buffer中有数据就可以播放,因此,一般使用AudioQueue对象来播放音频流,这样可以“边下载边播放”。
播放音频的方法:
AudioQueueNewOutput
1、用来创建一个播放音频队列的对象AudioQueueRef,然后就是对该audioqueue对象进行操作。
2、用来添加一个回调方法AudioQueueOutputCallback,调用该方法时会返回一个audioqueue的buffer,该buffer中的数据已经被使用,需要在这个方法中填充新数据。
3、
AudioQueueEnqueueBuffer
想缓冲区中添加新的数据(数据一般从file或网络中获取)
//====下载=====
CFReadStream
CFReadStreamClientCallBack回调函数在CFReadStreamSetClient中调用,是第三个参数。CFReadStreamClientCallBack只有在满足CFReadStreamSetClient中添加的streamEvents发生时才会别回调。
CFReadStreamScheduleWithRunLoop方法把stream加到一个线程中。然后,CFReadStreamSetClient在设置的东西就起作用了。当各种streamEvent发生时,client都会得到通知,client判断是否执行回调方法CFReadStreamClientCallBack。
AudioSession类
一个c接口,用来管理应用中audio的行为。
线程的操作,暂停后可能是县城就停止了。
对线程的操作 让某一个线程停下来。
AudioQueue
一个c编程接口,是Core Audio的一部分。功能:录音、播放音频。
AudioQueue类播放音频时,在内存中维护着一个buffer queue。只要buffer中有数据就可以播放,因此,一般使用AudioQueue对象来播放音频流,这样可以“边下载边播放”。
audioqueue中的方法都是静态方法,使用时传递进去的参数前缀是in,传递出来的参数前缀是out播放音频的方法:
AudioQueueNewOutput
1、用来创建一个播放音频队列的对象AudioQueueRef,然后就是对该audioqueue对象进行操作。
2、用来添加一个回调方法AudioQueueOutputCallback,调用该方法时会返回一个audioqueue的buffer,该buffer中的数据已经被使用,需要在这个方法中填充新数据。
3、
AudioQueueEnqueueBuffer
想缓冲区中添加新的数据(数据一般从file或网络中获取)
AudioQueueAllocateBuffer
为一个audioqueue分配一个queueBuffer,每调用一次创建一个缓冲区,最后所有的缓冲区组成一个缓冲队列。
AudioQueueCreateTimeline
创建一个与audioqueue相关的时间轴。如果想要显示audio的时间,需要熟悉uyutimeLine相关的方法。
audioqueue的属性操作:
具体属性类型见官方文档:https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/c/func/AudioQueueAddPropertyListener
AudioQueueSetProperty
用来设置某一个audioqueue对象的属性,具体属性以 kAudioQueueProperty_*开头
AudioQueueGetProperty
获取audioqueue对象的某一个属性值。首先应该先调用AudioQueueGetPropertySize方法获取value的大小(byte形式)
AudioQueueAddPropertyListener
添加一个属性监听器。当一个audioqueue的对应属性值改变时,会回调这个监听器。
audioqueue的参数操作:
AudioQueueSetParameter
AudioQueueGetParameter
对参数的修改和获取,具体参数parameter包括:音量的调节、声道的调节、以及音量的渐变设置
发表评论
-
tableview FPS 优化
2016-06-28 11:26 1现状: 在滚动tableview ... -
iOS 开发者中的公司账号与个人账号之间有什么区别?
2016-06-23 14:54 500原文:http://www.zhihu.com/questio ... -
strong weak copy
2016-04-24 21:01 629copy的使用 如果是mutable,则co ... -
App性能优化思考
2015-10-13 15:24 908一个app的数据 启动时间 crash率 每个 ... -
iOS之手势操作
2015-01-19 10:24 781手势学习: https://developer. ... -
iOS之网络学习
2015-01-19 10:23 643网络学习: http://nshipster.c ... -
nib文件的加载过程
2014-10-24 13:39 793参考:http://blog.csdn.net/nokiax ... -
NSCoder&&NSCoding使用
2014-10-24 11:38 757NScoder和NScoding的作用是将自定义的类的对象持 ... -
Autolayout学习
2014-10-20 16:32 744参考: http://my.oschina. ... -
IOS开发屏幕适配总结
2014-10-20 16:28 452面对4个分辨率的iPhone,建议使用Auto Layou ... -
Size Classes学习
2014-10-20 16:27 765Size Classes介绍:http://blog.su ... -
iPhone6分辨率以及适配
2014-10-20 11:36 1307对iPhone6适配的两种方式:1、兼容模式 这种模式 ... -
Core Animation简介
2014-10-19 15:33 778在iOS中,整个view都是直接构建在Core Animat ... -
Charles使用——HTTP代理服务器
2014-10-19 15:32 2054* HTTP代理服务器,监听8888端口 * HTTP监视 ... -
《精选》开发中遇到的问题总结
2014-10-19 15:31 10091、新浪微博的使用 使用的事umeng的SDK来调用微信、 ... -
使用JavaScript给UIWebView中的内容注入CSS
2014-10-06 21:26 1156NSString *filePath = [[NSB ... -
UIViewde的属性edgesForExtendedLayout
2014-09-26 17:56 692edgesForExtendedLayout 指定边缘 ... -
UIView的属性autoresizingMask
2014-09-26 17:36 765在 UIView 中有一个autoresizingMask ... -
UIWebView获取内容的高度
2014-09-24 13:13 745// 第一种方法 ... -
storyboard的总结
2014-09-02 11:30 735两个基本概念 scene 就是一个视图控制器 se ...
相关推荐
PDF.Toolbox.4.0.55.CRACK
AudioToolbox.framework AVFoundation.framework CoreGraphics.framework CoreMedia.framework CoreVideo.framework libbz2.tbd libz.tbd MediaPlayer.framework MobileCoreServices.framework OpenGLES.framework ...
2:添加AudioToolbox.framework、CFNetwork.framework、CoreGraphics.framework、QuartzCore.framework、SystemConfiguration.framework。 3:迅飞语音和高德地图中有一个引用重复了,解决办法就是到other linker ...
DockerToolbox.exe国外开源遥控器技术使用于基本程序的
t4 toolbox for visual studio 2019
Wavelet Toolbox的核心功能包括小波基的选择、小波变换、逆变换、小波包分析、多尺度分析以及小波系数的可视化等。 1. **小波基选择**:Wavelet Toolbox支持多种经典小波基,如Daubechies、Morlet、Symlet等,用户...
wiley.ubuntu.linux.toolbox.1000.plus.commands.for.ubuntu.and.debian.power.users.nov.2007.pdf
通过这份文档,用户不仅可以学习到如何操作工具箱,还能了解各种网络度量的理论基础和科学意义。 "BCT.zip"则是BCT工具箱的核心部分,包含了所有相关的MATLAB函数和脚本。用户解压后,可以将这个文件夹导入到MATLAB...
Using the MATLAB PDE TOOLBOX.chmUsing the MATLAB PDE TOOLBOX.chm
network_analyst_toolbox.chmnetwork_analyst_toolbox.chm
rar修复工具破解补丁 recovery.toolbox.for.rar.v1.1.8.17-patch
**前端项目-SW-Toolbox.zip** 在现代Web开发中,前端工程师经常面临的一个挑战是构建高度优化的、离线可用的应用程序。Service Worker技术的出现为此提供了强大的解决方案。SW-Toolbox,全称为Service Worker ...
"uninstall_eq_toolbox.m.zip_EQ" 这个文件标题暗示了一个与卸载过程相关的工具箱安装程序,特别是与"eq"(可能是"equation"或某种特定的软件标识)有关。这个描述"Uninstall using Toolbox Installer"告诉我们,它...
若要解压缩`toolbox.zip`,则应使用`unzip('toolbox.zip')`。 总的来说,MATLAB工具箱是MATLAB环境的重要组成部分,它为各种专业领域提供了丰富的计算工具。通过理解和熟练运用这些工具箱,用户可以在MATLAB环境中...
标题 "来源clojure-toolbox.com___下载.zip" 暗示了这个压缩包可能包含了与Clojure Toolbox网站相关的资源。Clojure Toolbox是一个专门收集、整理和推荐Clojure编程语言工具的平台。它为开发者提供了方便的查找和...
1、使用ArcMAP中的模型构建器提取流域,分为了两部分,第一部分(Hydrolog-dir-acc)为前期的流向,流量提取,主要是做为后续不同流量阈值的基础数据,第二部分(Hydrolog)为水文分析,得到水系和集水区(流域)的...
iOS平台,包含libx264及fdk-aac的FFmpeg头文件及lib文件 1. libbz2.tbd 2. libz.tbd 3. libiconv.tbd 4. CoreMedia.framework 5. VideoToolbox.framework 6. AudioToolbox.framework 7. AVFoundation.framework
2. **数据表查看和编辑**:提供数据表的浏览和编辑功能,支持添加、删除、修改记录,以及执行简单的查询操作。这对于快速的数据验证和调试非常有用。 3. **结构设计**:用户可以使用 SqlCe40Toolbox 设计和修改...
"Algorithm-mathtoolbox.zip"这个压缩包,提供了一个基于C++11的数学工具集,特别利用了Eigen库来实现包括插值、维数约简和优化等一系列高级数学操作。本文将深入探讨这些知识点,以及如何借助Eigen库高效地实现它们...