整理一些网络资源

第一部分

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

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

播放流程图: 

数据结构及接口说明:

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

AudioToolbox使用方法总结相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. AudioToolbox音效播放

    2019独角兽企业重金招聘Python工程师标准>>> // //  ViewController.m //  AudioToolbox音效播放 // //  Created by ...

  4. (转)KVAudioStreamer - 基于AudioToolBox的开源音频流媒体播放器

    原贴的地址:https://www.jianshu.com/p/7b40f0e8b6bb 在iOS上,播放音频一般使用AVAudioPlayer进行音频播放,但是AVAudioPlayer并不支持流媒 ...

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

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

  6. ios的常用的一些方法

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  7. Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程

    参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...

  8. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  9. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  10. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

最新文章

  1. 一步步编写操作系统 71 直接操作显卡,编写自己的打印函数71-74
  2. 外媒:iPhone 14全系有望配备120Hz ProMotion显示屏
  3. 用计算机找到自己的另一半,希望找到另一半的说说 期盼找到另一半的句子
  4. 观众喜欢,就有人说大陆人吃不起榨菜
  5. 通信行业最齐全的英语缩语手册
  6. 故宫网售朝珠耳机 专家提醒注意保护知识产权(图)
  7. 【Java】---JVM内存模型
  8. 【待续】海思Hi3520A学习笔记
  9. 2022-2028年中国公私合作(PPP)模式深度分析及发展战略研究报告
  10. java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...
  11. 千机智能孙海锋:期待与国际同行在高端制造领域同台竞技(自主可控CAM软件:UltraCAM)
  12. Channel Access Protocal——EPICS Base-3.16版CA协议 - 字节序与数据类型
  13. AutoK3s v0.4.8 发布 与 Harvester 梦幻联动
  14. 消防应急照明和疏散指示系统在轨道交通中的设计应用
  15. 什么样的故障让阿里云换了总裁?
  16. 华东地区博友链接集合(陆续增加中)
  17. 人生四大境界:不知道自己不知道 知道自己不知道 不知道自己知道 知道自己知
  18. Monkey 命令使用说明
  19. matlab电气仿真模块b25,基于Matlab的由双馈风力发电机组成的风电场仿真
  20. python adb开发-adb常见用法

热门文章

  1. 魔方软件测试自学,4 分钟!OpenAI 的机器手学会单手解魔方了,完全自学无需编程...
  2. foxmail 163企业邮箱配置
  3. cython安装ubuntu_cython简单使用方法
  4. Git使用的奇技淫巧,看这篇就够了!
  5. 礼金记账本安卓_礼金记账本
  6. 虚拟机安装或卸载时,无法打开注册表项问题
  7. 我从冯·诺依曼计算机体系,追溯到了JVM,一切原来如此
  8. JAVA后台,对上传资源限定大小
  9. ubuntu安装vmware12出现cannot ope dev/vmmon及modprobe vmmon提示密钥无效的解决办法
  10. 称重系统中应用车牌识别实现无人值守称重系统解决方案