音频播放
2016-07-08 15:08
351 查看
导入框架AVFoundation.framework与头文件#import<AVFoundation/AVFoundation.h>
简单使用终端转换音频格式: afconvert 提示 afconvert -hf提示可转格式
afconvert -f 目标格式 -d 目标格式后的数据格式 文件名
短音频播放方法封装
* 播放音效
* @param filename音效文件名
*/
+ (void)playSound:(NSString *)filename;
/**
* 销毁音效
* @param filename音效文件名
*/
+ (void)disposeSound:(NSString *)filename;
// 存放所有的音频ID
static NSMutableDictionary *_soundIDDict;
+ (void)initialize
{
_soundIDDict = [NSMutableDictionarydictionary];
}
+ (void)playSound:(NSString *)filename
{
//判断不可以为nil
if (!filename)return;
//从字典中取出soundID
SystemSoundID soundID = [_soundIDDict[filename]unsignedLongValue];
if (!soundID) {//
创建
// 加载音效文件
4000
NSURL *url = [[NSBundlemainBundle]
URLForResource:filenamewithExtension:nil];
if (!url)return;
// 创建音效ID
AudioServicesCreateSystemSoundID((__bridgeCFURLRef)url, &soundID);
// 放入字典
_soundIDDict[filename] =@(soundID);
}
// 播放
AudioServicesPlaySystemSound(soundID);
}
+ (void)disposeSound:(NSString *)filename
{
if (!filename)return;
SystemSoundID soundID = [_soundIDDict[filename]unsignedLongValue];
if (soundID) {
// 销毁音效ID
AudioServicesDisposeSystemSoundID(soundID);
// 从字典中移除
[_soundIDDictremoveObjectForKey:filename];
}
}
* 播放音乐
*
* @param filename
音乐文件名
*/
+ (AVAudioPlayer *)playMusic:(NSString *)filename;
/**
* 暂停音乐
*
* @param filename
音乐文件名
*/
+ (void)pauseMusic:(NSString *)filename;
/**
* 停止音乐
*
* @param filename
音乐文件名
*/
+ (void)stopMusic:(NSString *)filename;
/**
* 返回当前正在播放的音乐播放器
*/
+ (AVAudioPlayer *)currentPlayingAudioPlayer;
* 字典: filename作为key, audioPlayer作为value
*/
static NSMutableDictionary *_audioPlayerDict;
/**
* 初始化
*/
+ (void)initialize
{
_audioPlayerDict = [NSMutableDictionary
dictionary];
// 设置音频会话类型
AVAudioSession *session = [AVAudioSession
sharedInstance];
[session setCategory:AVAudioSessionCategorySoloAmbient
error:nil];
[session setActive:YES
error:nil];
}
/**
* 播放音乐
*
* @param filename
音乐文件名
*/
+ (AVAudioPlayer *)playMusic:(NSString *)filename
{
if (!filename)
return nil;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
if (!audioPlayer) {
// 创建
// 加载音乐文件
NSURL *url = [[NSBundle
mainBundle] URLForResource:filename
withExtension:nil];
if (!url)
return nil;
// 创建audioPlayer
audioPlayer = [[AVAudioPlayer
alloc] initWithContentsOfURL:url
error:nil];
// 缓冲
[audioPlayer prepareToPlay];
// audioPlayer.enableRate = YES;
// audioPlayer.rate = 10.0;
// 放入字典
_audioPlayerDict[filename] = audioPlayer;
}
// 播放
if (!audioPlayer.isPlaying) {
[audioPlayer play];
}
return audioPlayer;
}
/**
* 暂停音乐
*
* @param filename
音乐文件名
*/
+ (void)pauseMusic:(NSString *)filename
{
if (!filename)
return;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
// 暂停
if (audioPlayer.isPlaying) {
[audioPlayer pause];
}
}
/**
* 停止音乐
*
* @param filename
音乐文件名
*/
+ (void)stopMusic:(NSString *)filename
{
if (!filename)
return;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
// 暂停
if (audioPlayer.isPlaying) {
[audioPlayer stop];
// 直接销毁
[_audioPlayerDict
removeObjectForKey:filename];
}
}
/**
* 返回当前正在播放的音乐播放器
*/
+ (AVAudioPlayer *)currentPlayingAudioPlayer
{
for (NSString *filename
in _audioPlayerDict) {
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
if (audioPlayer.isPlaying) {
return audioPlayer;
}
}
return
nil;
}
简单使用终端转换音频格式: afconvert 提示 afconvert -hf提示可转格式
afconvert -f 目标格式 -d 目标格式后的数据格式 文件名
短音频播放方法封装
接口文件中定义方法
/*** 播放音效
* @param filename音效文件名
*/
+ (void)playSound:(NSString *)filename;
/**
* 销毁音效
* @param filename音效文件名
*/
+ (void)disposeSound:(NSString *)filename;
实现文件实现方法
// 字典: filename作为key, soundID作为value// 存放所有的音频ID
static NSMutableDictionary *_soundIDDict;
+ (void)initialize
{
_soundIDDict = [NSMutableDictionarydictionary];
}
+ (void)playSound:(NSString *)filename
{
//判断不可以为nil
if (!filename)return;
//从字典中取出soundID
SystemSoundID soundID = [_soundIDDict[filename]unsignedLongValue];
if (!soundID) {//
创建
// 加载音效文件
4000
NSURL *url = [[NSBundlemainBundle]
URLForResource:filenamewithExtension:nil];
if (!url)return;
// 创建音效ID
AudioServicesCreateSystemSoundID((__bridgeCFURLRef)url, &soundID);
// 放入字典
_soundIDDict[filename] =@(soundID);
}
// 播放
AudioServicesPlaySystemSound(soundID);
}
+ (void)disposeSound:(NSString *)filename
{
if (!filename)return;
SystemSoundID soundID = [_soundIDDict[filename]unsignedLongValue];
if (soundID) {
// 销毁音效ID
AudioServicesDisposeSystemSoundID(soundID);
// 从字典中移除
[_soundIDDictremoveObjectForKey:filename];
}
}
长音频播放
/*** 播放音乐
*
* @param filename
音乐文件名
*/
+ (AVAudioPlayer *)playMusic:(NSString *)filename;
/**
* 暂停音乐
*
* @param filename
音乐文件名
*/
+ (void)pauseMusic:(NSString *)filename;
/**
* 停止音乐
*
* @param filename
音乐文件名
*/
+ (void)stopMusic:(NSString *)filename;
/**
* 返回当前正在播放的音乐播放器
*/
+ (AVAudioPlayer *)currentPlayingAudioPlayer;
实现文件
/**
* 存放所有的音乐播放器* 字典: filename作为key, audioPlayer作为value
*/
static NSMutableDictionary *_audioPlayerDict;
/**
* 初始化
*/
+ (void)initialize
{
_audioPlayerDict = [NSMutableDictionary
dictionary];
// 设置音频会话类型
AVAudioSession *session = [AVAudioSession
sharedInstance];
[session setCategory:AVAudioSessionCategorySoloAmbient
error:nil];
[session setActive:YES
error:nil];
}
/**
* 播放音乐
*
* @param filename
音乐文件名
*/
+ (AVAudioPlayer *)playMusic:(NSString *)filename
{
if (!filename)
return nil;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
if (!audioPlayer) {
// 创建
// 加载音乐文件
NSURL *url = [[NSBundle
mainBundle] URLForResource:filename
withExtension:nil];
if (!url)
return nil;
// 创建audioPlayer
audioPlayer = [[AVAudioPlayer
alloc] initWithContentsOfURL:url
error:nil];
// 缓冲
[audioPlayer prepareToPlay];
// audioPlayer.enableRate = YES;
// audioPlayer.rate = 10.0;
// 放入字典
_audioPlayerDict[filename] = audioPlayer;
}
// 播放
if (!audioPlayer.isPlaying) {
[audioPlayer play];
}
return audioPlayer;
}
/**
* 暂停音乐
*
* @param filename
音乐文件名
*/
+ (void)pauseMusic:(NSString *)filename
{
if (!filename)
return;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
// 暂停
if (audioPlayer.isPlaying) {
[audioPlayer pause];
}
}
/**
* 停止音乐
*
* @param filename
音乐文件名
*/
+ (void)stopMusic:(NSString *)filename
{
if (!filename)
return;
// 从字典中取出audioPlayer
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
// 暂停
if (audioPlayer.isPlaying) {
[audioPlayer stop];
// 直接销毁
[_audioPlayerDict
removeObjectForKey:filename];
}
}
/**
* 返回当前正在播放的音乐播放器
*/
+ (AVAudioPlayer *)currentPlayingAudioPlayer
{
for (NSString *filename
in _audioPlayerDict) {
AVAudioPlayer *audioPlayer =
_audioPlayerDict[filename];
if (audioPlayer.isPlaying) {
return audioPlayer;
}
}
return
nil;
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 基于jQuery的网页影音播放器jPlayer的基本使用教程
- 实例解析使用Java实现基本的音频播放器的编写要点
- java音频播放示例分享(java如何播放音频)
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题