AudioToolbox使用方法总结

原创 2012年03月22日 10:02:49

整理一些网络资源

第一部分 

之前公司做的是音乐播放器,用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封装一个在线播放器类,AudioStreamer是老外封装的一个播放器类,有兴趣的朋友可以研究下。 

      其实IOS库中有两个可以播放在线音乐的播放器类,AVPlayer和MPMusicPlayerController 
这两个做简单的播放还不错,但是如果要做专业的音乐播放项目,功能还不够强大,例如:边听边存、断点续传、播放事件等等都无法满足。一下是以前做的笔记,仅供参考 

播放流程图: 
 

数据结构及接口说明: 


C代码  收藏代码
  1.     •   数据类型  
  2. 1.AudioFileStreamID             文件流  
  3. 2.AudioQueueRef                     播放队列   
  4. 3.AudioStreamBasicDescription   格式化音频数据  
  5. 4.AudioQueueBufferRef             数据缓冲  
  6.   
  7.     •   回调函数  
  8. 1.AudioFileStream_PacketsProc       解析音频数据回调  
  9. 2.AudioSessionInterruptionListener  音频会话被打断  
  10. 3.AudioQueueOutputCallback          一个AudioQueueBufferRef播放完  
  11.   
  12.     •   主要函数  
  13. 0.AudioSessionInitialize (NULL, NULL, AudioSessionInterruptionListener, self);  
  14. 初始化音频会话  
  15.   
  16. 1.AudioFileStreamOpen(  
  17.                         (void*)self,                            
  18.                         &AudioFileStreamPropertyListenerProc,   
  19.                         &AudioFileStreamPacketsProc,            
  20.                         0,                                      
  21.                         &audio_file_stream);              
  22. 建立一个文件流AudioFileStreamID,传输解析的数据  
  23.   
  24. 2.AudioFileStreamParseBytes(  
  25.                           audio_file_stream,  
  26.                           datalen,  
  27.                           [data bytes],  
  28.                           kAudioFileStreamProperty_FileFormat);   
  29. 解析音频数据  
  30.   
  31. 3.AudioQueueNewOutput(&audio_format, AudioQueueOutputCallback, (void*)self, [[NSRunLoop currentRunLoop] getCFRunLoop], kCFRunLoopCommonModes, 0, &audio_queue);  
  32. 创建音频队列AudioQueueRef  
  33.   
  34. 4.AudioQueueAllocateBuffer(queue, [data length], &buffer);  
  35. 创建音频缓冲数据AudioQueueBufferRef  
  36.   
  37. 5.AudioQueueEnqueueBuffer(queue, buffer, num_packets, packet_descriptions);  
  38. 把缓冲数据排队加入到AudioQueueRef等待播放  
  39.   
  40. 6.AudioQueueStart(audio_queue, nil);    播放  
  41. 7.AudioQueueStop(audio_queue, true);  
  42.  AudioQueuePause(audio_queue);          停止、暂停  
  43.   
  44.     •   断点续传  
  45. 1。在http请求头中设置数据的请求范围,请求头中都是key-value成对  
  46.     key:Range           value:bytes=0-1000  
  47.     [request setValue:range  forHTTPHeaderField:@"Range"];  
  48. 可以实现,a.网络断开后再连接能继续从原来的断点下载  
  49.             b.可以实现播放进度可随便拉动  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AudioQueue(AudioToolBox)的原理与使用

前面和大家探讨了AVFoundation对音频进行录制播放的多种方式,尤其是前一节,比较底层的控制了音频的录制。下面我们再来看看音频的整体框架: 我们来介绍介绍中间层黄色部分:Audio...

unity3d AudioToolKit 音频管理插件使用方法

AudioToolKit 音频管理插件 AudioToolKit是一款比较方便的音频管理插件,本文提供介绍和使用方法讲解,不提供插件。该插件全部由代码组成,附带demo.  AudioToolKi...

IOS进阶之AudioToolBox.framework

1.AudioToolbox概述 通过AudioToolbox框架,可以将短声音注册到system sound服务上,被注册到system sound服务上的声音称之为 system sounds...

iOS开发小结 - 播放系统提示音使用总结(AudioToolbox)

开发过程中需要用到苹果自带的系统提示音,下面我总结了一下关于系统提示音播放的方法 第一步首先得导入AudioToolbox框架#import 播放系统自带的提示声播放系统自带的提示声很简单,只需要两行...

AudioToolbox 详解

第一部分 用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封...
  • ch_soft
  • ch_soft
  • 2012年06月14日 23:19
  • 6546

IOS_AudioToolbox音效

1.AudioToolbox概述 通过AudioToolbox框架,可以将短声音注册到system sound服务上,被注册到system sound服务上的声音称之为 system sounds...

AudioToolbox 详解

第一部分 用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封...

MTK Android software Tools工具的说明

MTK发布的Android software Tools工具包,里面包含了很多的MTK工具,如下是简要说明及学习文档 MTK Android software Tools工具的说...
  • longfeey
  • longfeey
  • 2014年08月13日 12:43
  • 10700

流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

RTP           参考文档 RFC3550/RFC3551          Real-time Transport Protocol)是用于Internet上针对多媒体数据流的...

【iOS】category重写方法的调用

前两天工程中,出现了一个类的两个分类(自己实现了一个,第三方SDK里有一个),同时实现了一个方法名相同的方法,当时就产生了一个疑问,当实际调用时调的是哪个分类的方法呢?...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AudioToolbox使用方法总结
举报原因:
原因补充:

(最多只允许输入30个字)