`
miss大为
  • 浏览: 82415 次
  • 性别: 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 框架来播放系统提示音和自定义提示音。在本文中,...

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

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

    MATLAB Audio Database Toolbox-开源

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

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

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

    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"退出设置...

    【MATLAB工具箱集锦】-drEEM toolbox.zip

    14 模式识别与机器学习工具箱 15 ttsbox1.1语音合成工具箱 16 分数阶傅里叶变换的程序FRFT 17 魔方模拟器与规划求解 18 隐马尔可夫模型工具箱 HMM 19 图理论工具箱GrTheory 20 自由曲线拟合工具箱ezyfit 21 分形维数...

Global site tag (gtag.js) - Google Analytics