之前公司做的是音乐播放器,用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封装一个在线播放器类,不过也有一个开源的播放器AudioStreamer,是老外封装,有兴趣的朋友可以研究下。
其实IOS库中有两个可以播放在线音乐的播放器类,AVPlayer和MPMusicPlayerController
这两个做简单的播放还不错,但是如果要做专业的音乐播放项目,功能还不够强大,例如:边听边存、断点续传、播放事件等等都无法满足。一下是以前做的笔记,仅供参考
播放流程图:
数据结构及接口说明:
其实IOS库中有两个可以播放在线音乐的播放器类,AVPlayer和MPMusicPlayerController
这两个做简单的播放还不错,但是如果要做专业的音乐播放项目,功能还不够强大,例如:边听边存、断点续传、播放事件等等都无法满足。一下是以前做的笔记,仅供参考
播放流程图:
数据结构及接口说明:
• 数据类型 1.AudioFileStreamID 文件流 2.AudioQueueRef 播放队列 3.AudioStreamBasicDescription 格式化音频数据 4.AudioQueueBufferRef 数据缓冲 • 回调函数 1.AudioFileStream_PacketsProc 解析音频数据回调 2.AudioSessionInterruptionListener 音频会话被打断 3.AudioQueueOutputCallback 一个AudioQueueBufferRef播放完 • 主要函数 0.AudioSessionInitialize (NULL, NULL, AudioSessionInterruptionListener, self); 初始化音频会话 1.AudioFileStreamOpen( (void*)self, &AudioFileStreamPropertyListenerProc, &AudioFileStreamPacketsProc, 0, &audio_file_stream); 建立一个文件流AudioFileStreamID,传输解析的数据 2.AudioFileStreamParseBytes( audio_file_stream, datalen, [data bytes], kAudioFileStreamProperty_FileFormat); 解析音频数据 3.AudioQueueNewOutput(&audio_format, AudioQueueOutputCallback, (void*)self, [[NSRunLoop currentRunLoop] getCFRunLoop], kCFRunLoopCommonModes, 0, &audio_queue); 创建音频队列AudioQueueRef 4.AudioQueueAllocateBuffer(queue, [data length], &buffer); 创建音频缓冲数据AudioQueueBufferRef 5.AudioQueueEnqueueBuffer(queue, buffer, num_packets, packet_descriptions); 把缓冲数据排队加入到AudioQueueRef等待播放 6.AudioQueueStart(audio_queue, nil); 播放 7.AudioQueueStop(audio_queue, true); AudioQueuePause(audio_queue); 停止、暂停 • 断点续传 1。在http请求头中设置数据的请求范围,请求头中都是key-value成对 key:Range value:bytes=0-1000 [request setValue:range forHTTPHeaderField:@"Range"]; 可以实现,a.网络断开后再连接能继续从原来的断点下载 b.可以实现播放进度可随便拉动
发表评论
-
如何使用AV Foundation从摄像头将视频帧捕获为图像
2012-11-15 17:21 7395如果译错,感谢指出。 英文原文地址:https://d ... -
iOS单元测试
2012-11-05 11:37 872转自:http://www.cnblogs.com/ke ... -
Core Data数据持久化的使用
2012-10-30 21:31 1010CoreData 是ios中用来对数据做持久化的一个框架 ... -
ASIHTTPRequest缓存策略的设置
2012-10-30 17:23 3831ASIHTTPRequest 是一款强大的网络请求框架,该框架 ... -
【无限互联】xcode自定义类的模板
2012-10-23 19:37 1114翻译:http://www.bobmccune.com/ ... -
【无限互联】适配iOS6和iPhone5屏幕
2012-10-23 18:05 24341. iOS6的mo模拟器比较大,通过comman ... -
【无限互联】mac下配置svn服务器
2012-10-22 13:30 732在mac下配置svn服务器其实很简单,只需要简单的几句命令就可 ... -
【无限互联】iOS开发之多线程开发
2012-10-10 17:41 1207本节要点: 1.多线程的概念 2.掌握iOS中多线程 ... -
【无限互联】iOS开发block用法之UIAlertView控件的修改
2012-10-10 17:06 2629原始的UIAlertView的需要通过委托方法来实现按钮 ... -
Objective-C新特性
2012-09-05 14:38 665基于Xcode4.4(不完全独有)。1. 成员方法无需前置声明 ... -
iphone-NSDate日期处理
2012-08-31 16:25 1027NSDate存储的是世界标准时(UTC),输出时需要 ... -
iphone开发资源汇总
2012-08-31 16:16 1568如何用Facebook graphic api上传视 ... -
iOS-如何让xcode自动检查内存泄露
2012-08-31 16:05 1060在project-setting中找到 “Run Static ... -
UIScrollView的属性总结
2012-02-08 15:58 4390在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scr ... -
iPhone开发之 ARC是什么
2012-01-17 16:58 1336相关链接:http://blog.csdn ... -
画图时 自己做的一小笔记
2012-01-07 21:02 9250 CGContextRef context = UIGra ... -
让Xcode 4.2生成的app支持旧版iOS设备(armv6)
2012-01-07 00:46 1288这几天遇到一个非常奇怪的问题,基于Xcode 4.2开发的ap ... -
5个开源库的JSON解析速度测试
2011-12-03 23:15 1414iOS5新增了JSON解析的API ... -
获取iOS设备当前ip地址
2011-11-17 23:16 1345第一种方法是用系统api的方式获取,如下 #include & ... -
Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts)
2011-11-12 00:08 1399一个Graphics Context表示一 ...
相关推荐
Matlab系列--Matlab Image Processing Toolbox 学习笔记
matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接...
IOS 播放系统提示音使用总结(AudioToolbox) 开发过程中需要用到苹果自带的系统提示音,下面我总结了一下关于系统提示音播放的方法 第一步首先得导入AudioToolbox框架 #import <AudioToolbox> 播放系统自带的提示...
MATLAB-robotic-toolbox工具箱学习笔记,入门资料整理,使用MATLAB进行机器人仿真必备工具箱。
为您提供GiliSoft Audio Toolbox Suite 音频处理软件下载,GiliSoft Audio Toolbox Suite是一款音频编辑工具,软件集成了多种音频编辑处理工具,可以根据需要进行选择,包括录音机、音频切割器、音频转换器、音频...
。。。
。。。
flutter_audio_toolbox Flutter Audio Tool Box插件,支持ios和android。
。。。
...
MATLAB音频数据库工具箱可通过其元数据轻松访问和过滤TIMIT和YOHO等音频数据库。 数据库工具箱取代了通常需要访问此类数据库的手动过滤和自定义编码。
基于麦克风阵列的声源定位方法很多,相位变换加权的可控响应功率SRP-PHAT声源定位算法在混响环境中有较强的鲁棒性,可实现真实环境中的声源定位,因此该算法得到了广泛应用。SRP-PHAT对阵型没有特定要求,因此也适用...
toolbox
#XMIDI###简介XMIDI是一款IOS上的MIDI文件播放引擎,基于Audio Toolbox Framework和OpenAL这两个库。 XMIDI使用Audio Toolbox Framework下API来完成MIDI文件的读取和解析,然后使用OpenAL来播放对应的音符。OpenAL...
Robotic Toolbox 博客学习文件
一些关于robotic toolbox的M文件
matlab toolbox
GIS课程平时作业:Using ArcToolbox 读书笔记
KSVD_Matlab_ToolBox KSVD_Matlab_ToolBox学习工具箱,可以用于原子的训练学习