ios如何处理声音

来源:互联网 发布:网络管理下载 编辑:程序博客网 时间:2024/06/05 10:26

AVAudioPlayer播放声音

既然万物皆对象,声音自然也是对象.那么必定有处理声音的类.这个类中必定有这样一些方法属性,方法:播放,暂停等.属性:音量,等.那么所要做的就是找到这个类,创建一个声音对象,调用相应的方法即可.框架是系统提供的对于一些已经封装好的,程序中开发中必定会接触到的对象.比如我们少不了和字符串打交道,和数字打交道,和数组打交道,于是系统就提供了封装了NSString类,NSArray类,NSNumber类等等,将他们封装在Foundation框架中.于是我们只需要声明Foundation框架,就可以利用已经封装好的类(对象).那么,第一步应该是确定,声音对象被封装在哪个框架下.
#include <CoreFoundation/CoreFoundation.h>#import <Foundation/NSObjCRuntime.h>#import <Foundation/NSArray.h>#import <Foundation/NSAutoreleasePool.h>#import <Foundation/NSBundle.h>#import <Foundation/NSByteOrder.h>#import <Foundation/NSCalendar.h>

点进#import

#import <AVFoundation/AVAudioMix.h>#import <AVFoundation/AVAudioProcessingSettings.h>#import <AVFoundation/AVFAudio.h>#import <AVFoundation/AVPlayer.h>#import <AVFoundation/AVPlayerItem.h>#import <AVFoundation/AVPlayerItemOutput.h>#import <AVFoundation/AVPlayerItemProtectedContentAdditions.h>#import <AVFoundation/AVPlayerItemTrack.h>#import <AVFoundation/AVPlayerLayer.h>

于是找啊找,找到#import

#import <AVFoundation/AVAudioBuffer.h>#import <AVFoundation/AVAudioChannelLayout.h>#import <AVFoundation/AVAudioConnectionPoint.h>#import <AVFoundation/AVAudioConverter.h>#import <AVFoundation/AVAudioEngine.h>

让我乐一会儿……
AVFoundation中还有

#import <AVFoundation/AVAsset.h>#import <AVFoundation/AVAssetExportSession.h>............#import <AVFoundation/AVCaptureDevice.h>#import <AVFoundation/AVCaptureInput.h>............#import <AVFoundation/AVVideoCompositing.h>#import <AVFoundation/AVVideoComposition.h>

推想:
AVVedio是处理视频的类么?AVPlayer是处理播放器的类么?

//    NSURL *url = [NSURL URLWithString:@"file:///Users/yufang/Music/网易云音乐/Adele - Someone Like You.mp3"];  **NSURL  *url = [[NSURL alloc]initFileURLWithPath:@"/Users/yufang/Music/网易云音乐/Adele - Someone Like You.mp3"];**第二步:因为是用initWithContentsOfURL构造方法初始化的,要求传一个url,本着所谓面向对象的编程就是找对象,没有对象创建对象.于是创建一个url对象.因为快速创建对象方法比较便捷,所以首先考虑使用类方法URLWithString,之前学习url提到了本地文件和网络文件的区别,说是本地文件的scheme使用"file——当地电脑或网上分享的文件",但是似乎不行.控制台输出错误" Error Domain=NSOSStatusErrorDomain Code=-10875 "(null)"";去掉"file://"也是一样.    于是尝试其他的初始化方法,找到了构造方法initFileURLWithPath,前面并没有写"file://",路径是全路径.OK啦.    //url是统一资源定位符,    **static AVAudioPlayer *player;**第一步:因为声音播放是延时性的,而创建的声音对象的引用是局部变量,当该方法一执行完就被释放,所以,需要将声音对象的引用声明为全局变量.    NSError *err;    player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&err];    [player play];    NSLog(@"%@",err);

问题:
url是什么?和文件简介中的路径有什么区别?文件简介中的路径是本机路径.
如何根据url确定一个本地文件?网络资源?
初始化方法initFileURLWithPath和URLWithString方法异同?如何通过URLWithString方法拿到我的声音文件?

什么是url

url是uniform resource locator,意为统一资源定位符,说白了就是地址,网上资源的唯一地址.拿到它就可以拿到对应的资源.url是uri(Uniform Resource Identifier —统一资源标示符)的一种.”统一资源标志符确定一个资源,而统一资源定位符不但确定一个资源,而且还表示出它在哪里。”
url由这几部分组成:
协议 服务器名称(IP地址) 文件路径 文件名
有时候IP后接”:”冒号,包括访问该服务器的账户,密码
url又可以分为绝对url,和相对url,绝对url就是全路径.
url本身也是有路径的,如果目标文件也在当前目录,那么只需要”文件名”即可.

NSURL

0 0