iOS之音频播放--AVFoundation框架的基本使用
来源:互联网 发布:蔡英文2017 知乎 编辑:程序博客网 时间:2024/06/05 23:53
本篇文章跟大家简单地介绍下iOS音频的播放,即AVFoundation框架的使用。这里以音效播放为例,实现的功能是点击屏幕,随机播放一个音效。
为了使代码简洁,这里封装了一个音频工具类-STAudioTool来播放音频,在控制器中只需要调用该类的方法即可。
首先,导入AVFoundation框架,并导入其头文件#import <AVFoundation/AVFoundation.h>。在STAudioTool类中定义了一个字典的全局变量,用于存放所有的音频ID,一个音效文件会对应一个soundID。
在STAudioTool的头文件中有两个类方法,一个用来播放音效,一个用来销毁音效:
#import <Foundation/Foundation.h>
@interface STAudioTool : NSObject
/**
播放音效
*/
+(void)playSound:(NSString *)fileName;
/**
销毁音效
*/
+(void)disposeSound:(NSString *)fileName;
@end
对于存放音频ID的字典我们不需要重复创建,因此把它放在了initialize中初始化,只需要初始化一次即可。下面来看看播放/销毁音效两个方法的实现:+(void)playSound:(NSString *)fileName
{
if (!fileName)return;//如果文件为空,则直接返回
//1.从字典中取出soundID
SystemSoundID soundID=[_soundIDDict[fileName]unsignedIntValue];
if (!soundID) {//创建
//加载音效文件
NSURL *url=[[NSBundlemainBundle]URLForResource:fileNamewithExtension:nil];
if (!url)return;//如果url为空,则直接返回
//创建音效ID
AudioServicesCreateSystemSoundID((__bridgeCFURLRef _Nonnull)url, &soundID);
//放入字典
_soundIDDict[fileName]=@(soundID);
}
//2.播放
AudioServicesPlaySystemSound(soundID);
}
+(void)disposeSound:(NSString *)fileName
{
if (!fileName)return;
SystemSoundID soundID=[_soundIDDict[fileName]unsignedIntValue];
if (!soundID) {
//销毁音效ID
AudioServicesDisposeSystemSoundID(soundID);
//从字典中移除
[_soundIDDictremoveObjectForKey:fileName];
}
}
然后我们在控制器中实现touchesEnded方法,在该方法中调用STAudioTool的播放音频方法:
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//音效文件的文件名,随机获取的
NSString *filename=[NSStringstringWithFormat:@"m_%02d.wav",arc4random_uniform(14)+3];
//调用方法,播放音频
[STAudioToolplaySound:filename];
}
这样,我们就实现了音频的播放,点击屏幕课随机播放音效。
- iOS之音频播放--AVFoundation框架的基本使用
- iOS --- 使用AVFoundation的AVAudioPlayer来播放音频
- AVFoundation音频播放-AVAudioPlayer
- 使用AVFoundation框架播放音效
- 使用AVFoundation框架播放音效
- iOS AVFoundation(二)之视频播放
- ios开发之使用AudioQueue进行音频的播放
- 本地音频播放,使用AVFoundation.framework中的AVAudioPlayer来实现
- IOS AVFoundation的录音与播放
- IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
- IOS音频3:之采用四种方式播放音频文件(三)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
- IOS音频4:之采用四种方式播放音频文件(四)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
- IOS音频5:之采用四种方式播放音频文件(五)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
- iOS 之播放音频
- ios-UI高级 相册的相关处理和音乐播放AVFoundation框架的内容总结
- kidd风的IOS日志之使用AVFoundation生成缩略图
- iOS 视频录制、播放,使用视听媒体框架AVFoundation实现视频录制播放 —— HERO博客
- IOS 在线音频播放框架FreeStreamer使用技巧心得
- C++指针
- TortoiseSVN webstorm命令行
- [Cocoa]深入浅出 Cocoa 之消息
- iOS 自定义emoji表情键盘
- Spring的基本用法(三)
- iOS之音频播放--AVFoundation框架的基本使用
- Ubuntu 环境中搭建嵌入式交叉编译链方法
- 说说PADS中的ECO
- struct和typedef struct
- 复变函数
- Bias-Variance Tradeoff【转载】
- MFC 实现单进程运行
- 安装服务时遇到 System.BadImageFormatException: 未能加载文件或程序集
- Verify Preorder Serialization of a Binary Tree