`
miss大为
  • 浏览: 83695 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AudioToolbox学习笔记

 
阅读更多
      之前公司做的是音乐播放器,用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封装一个在线播放器类,不过也有一个开源的播放器AudioStreamer,是老外封装,有兴趣的朋友可以研究下。
      其实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.可以实现播放进度可随便拉动

分享到:
评论

相关推荐

    Matlab系列--Matlab Image Processing Toolbox 学习笔记.zip

    《Matlab Image Processing Toolbox 学习笔记》 Matlab作为一款强大的数值计算和数据分析软件,其Image Processing Toolbox(图像处理工具箱)是进行图像处理、分析和可视化的必备工具。这个工具箱提供了丰富的函数...

    Matlab Image Processing Toolbox 学习笔记.zip

    matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接...

    IOS 播放系统提示音使用总结(AudioToolbox)

    IOS 播放系统提示音使用总结(AudioToolbox) IOS 播放系统提示音使用总结(AudioToolbox)是 IOS 开发中一个非常重要的知识点,它主要涉及到使用 AudioToolbox 框架来播放系统提示音和自定义提示音。在本文中,...

    MATLAB Audio Database Toolbox-开源

    1. **MATLAB Audio Database Toolbox**: 这是MATLAB环境中用于音频处理的一个扩展工具,它包含了处理音频数据库的函数和接口。用户可以借助这个工具箱进行音频分析、特征提取、信号增强以及分类任务。 2. **TIMIT...

    GiliSoft Audio Toolbox Suite 音频处理软件 v8.5免费版

    为您提供GiliSoft Audio Toolbox Suite 音频处理软件下载,GiliSoft Audio Toolbox Suite是一款音频编辑工具,软件集成了多种音频编辑处理工具,可以根据需要进行选择,包括录音机、音频切割器、音频转换器、音频...

    MATLAB-robotic-toolbox工具箱学习笔记

    MATLAB-Robotic-Toolbox 工具箱学习笔记提供了机器人仿真必备的工具箱。 一、General *Rotations:旋转矩阵的操作 * rotx() 函数:生成绕 x 轴旋转的旋转矩阵 * rotz() 函数:生成绕 z 轴旋转的旋转矩阵 * roty...

    使用matlab处理音频的音频工具箱

    包含以下文件:readwav - 读取WAV文件 ... readaif - 读 AIFF Audio Interchange file format 文件 readcnx - 读 BT Connex database 文件 readau - 读 AU文件(from SUN) readflac -读 FLAC 文件 等等

    Matlab Robotic Toolbox工具箱学习笔记.pdf

    《Matlab Robotic Toolbox工具箱学习笔记》 Matlab Robotic Toolbox是一款强大的工具箱,专为在Matlab环境中进行机器人建模、控制和仿真而设计。这个工具箱提供了丰富的功能,包括旋转、变换、轨迹规划等,适用于...

    Matlab-Robotic-Toolbox工具箱学习笔记.pdf

    《Matlab Robotic Toolbox工具箱学习笔记》 Matlab Robotic Toolbox是一款强大的工具箱,用于在Matlab环境中进行机器人建模、控制与仿真。本文主要根据该工具箱的demonstrations目录,分为三个部分来深入探讨其核心...

    Matlab Robotic Toolbox工具箱学习笔记.docx

    在本笔记中,我们将探讨该工具箱的一些关键功能。 首先,我们关注的是机器人旋转表示。在 Robotics Toolbox 中,可以使用 `rotx`, `roty`, `rotz` 函数来生成绕 x, y, z 轴的旋转矩阵,分别对应绕这三个轴的角度。...

    混音-声道-音频处理demo

    在这个项目中,开发者使用了iOS和macOS平台上的AudioToolBox框架,这是一个强大的音频处理工具集。 AudioToolBox是Apple提供的核心框架之一,用于处理音频数据,支持多种音频格式的读写,以及播放、录制、混音等...

    flutter_audio_toolbox:Flutter Audio Tool Box插件,支持ios和android

    8. **示例代码**:为了便于学习和使用,flutter_audio_toolbox通常会附带一些示例代码,这些代码展示了如何初始化音频管理器、播放音频、停止播放、录制音频等基本操作,帮助开发者快速上手。 在实际项目中,开发者...

    Audio Systems Toolbox.zip_PHAT算法_SRP-PHAT算法_SRP_PHAT_sugargx5_声源

    基于麦克风阵列的声源定位方法很多,相位变换加权的可控响应功率SRP-PHAT声源定位算法在混响环境中有较强的鲁棒性,可实现真实环境中的声源定位,因此该算法得到了广泛应用。SRP-PHAT对阵型没有特定要求,因此也适用...

    iOS音视频硬件编码源码,iOS原生不包含任何三方库音视频编码源码demo

    开发者可以通过研究这个源码学习如何正确地使用AudioToolbox和VideoToolbox框架,从而在自己的应用中实现高质量、低延迟的音视频编码功能。同时,这也为那些希望深入理解iOS音视频处理底层原理的开发者提供了宝贵的...

    matlab机器学习笔记.docx

    Matlab 机器学习笔记 Matlab 是一个功能强大且广泛应用于机器学习和数据分析的工具。本笔记总结了 Matlab 中的机器学习技巧和 GUI 使用方法。 机器学习基础 机器学习是指在计算机科学中,使用算法和统计模型来...

    XMIDI:IOS上的MIDI文件播放引擎

    #XMIDI###简介XMIDI是一款IOS上的MIDI文件播放引擎,基于Audio Toolbox Framework和OpenAL这两个库。 XMIDI使用Audio Toolbox Framework下API来完成MIDI文件的读取和解析,然后使用OpenAL来播放对应的音符。OpenAL...

    IOS G711播放Demo

    本文将深入探讨如何使用AudioToolBox框架在iOS上实现G711音频格式的播放,以及如何通过修改音频参数来适应不同的音频压缩格式。 G711是一种广泛使用的音频编码标准,主要用于电话网络和VoIP通信。它有两种编码方式...

    audioplaytest.zip

    在本文中,我们将深入探讨如何在Mac环境下使用Qt框架,结合FFmpeg进行音频解码,并利用AudioToolBox框架播放音频。同时,我们还将讨论使用QAudioOutput类在Qt中实现音频播放的方法。以下是对这些技术的详细阐述: ...

    在苹果手机使用zSound的Bass接口1

    AudioToolbox是Apple提供的一个框架,包含了处理音频的基本工具,如播放、混音、格式转换等,对于使用Bass接口来说至关重要。 设置完Remote Path后,记得点击"Ok"保存,然后更新本地文件缓存,再次点击"Ok"退出设置...

Global site tag (gtag.js) - Google Analytics