Tag: avaudioplayer

AudioServicesPlaySystemSound在模拟器xCode 6 GM上静音

我在模拟器上运行下面的代码,我没有得到任何声音: NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"pageflip" ofType:@"mp3"]; NSURL *soundUrl = [NSURL fileURLWithPath:soundPath]; AudioServicesCreateSystemSoundID((__bridge CFURLRef) soundUrl, &_soundEffect); AudioServicesPlaySystemSound(_soundEffect); 该代码已经在xCode 5和iOS 7上成功testing。根据需要导入库。 我已经logging了soundPath,并且它返回了文件系统上的正确位置。 有没有人遇到类似的问题?

audioPlayerDidFinishPlaying从不触发

我创build了一个自定义类来处理audio播放。 AudioPlayback.h #import <Foundation/Foundation.h> #import "AVFoundation/AVAudioPlayer.h" #import <AVFoundation/AVFoundation.h> @interface AudioPlayback : NSObject <AVAudioPlayerDelegate> { AVAudioPlayer *player; BOOL playing; NSTimeInterval duration; } @property (nonatomic, assign) AVAudioPlayer *player; @property (readonly) BOOL playing; @property (readonly) NSTimeInterval duration; -(NSTimeInterval)GetSoundFileDuration:(NSString *) sound_file_name; -(void)PlaySoundFile:(NSString *) sound_file_name; -(void)play; -(void)stop; – (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag; @end 然后,在AudioPlayback.h中 #import "AudioPlayback.h" @implementation AudioPlayback @synthesize player; -(id)init […]

我怎样才能使用AVAudioPlayer播放audio更快*和*更高音?

问题陈述: 我在我的应用程序中存储了一系列以.m4a文件(AAC格式,48 KHz,16位)存储的声音效果,我希望以各种速度和音高播放,而无需预先生成所有变体文件。 虽然AVAudioPlayer对象的AVAudioPlayer属性可以改变播放速度,但它始终保持原始音高,这不是我想要的。 相反,我只是想要更快或更慢地播放声音样本,并使音高向上或向下匹配 – 就像加速或减慢旧式的卷轴式磁带录音机一样。 换句话说,我需要一些方法来改变audio采样率,如+2个半音(快12%),-5个半音(慢33%),+ 12个半音(快两倍)等等。 题: 有什么方法从AVAudioPlayer对象中获取线性PCMaudio数据,使用不同的iOS框架应用采样率转换,并将生成的audio数据填充到新的AVAudioPlayer对象中,然后可以正常播放? 可能的途径: 我正在读AudioConverterConvertComplexBuffer 。 特别是kAudioConverterSampleRateConverterComplexity_Mastering , kAudioConverterQuality_Max和AudioConverterFillComplexBuffer()引起了我的注意。 所以看起来这个audio转换框架是可能的。 这是我应该进一步探索的途径吗? 要求: 我其实不需要立即开始播放。 如果采样率转换稍微延迟,那没问题。 我所有的样品都是4秒或更less,所以我想可以快速进行任何即时重采样,大约在1/10秒或更短。 (尽pipe如此,超过1/2将会太多。) 如果有更简单的方法来使用iOS提供的转换框架,我真的宁愿不进入OpenAL或Core Audio等重量级的东西。 但是,如果使用OpenAL或Core Audio的这个问题有一个简单的解决scheme,我很乐意考虑这个问题。 我所说的“简单”是指可以用50-100行代码实现的东西,并且不需要启动额外的线程将数据传送到声音设备。 我宁愿将所有的东西都自动处理 – 这就是为什么我愿意在播放前转换audio剪辑。 我想在这里避免任何第三方库,因为这不是火箭科学,我知道它本来可以在iOS框架下实现。 再次,我需要一起调整音高和播放速度,而不是分开 。 所以,如果播放速度减慢了2倍,人声就会变得非常深沉而缓慢。 如果播放速度加快2-3倍,人声就像一个快速通话的花栗鼠。 换句话说,我绝对不希望在保持audio持续时间不变的情况下改变音调,因为当向上弯曲音高超过几个半音时,该操作导致不希望的“细小”的声音。 我只是想加快整个过程,把音调作为一个自然的副作用,就像老式的录音机以前那样。 需要在iOS 6或更高版本上工作,但iOS 5支持将是一个不错的奖励。

在iOS应用程序中播放一个mp3文件

我无法弄清楚如何在iPhone游戏中播放音乐文件。 我创build一个游戏,我试图找出如何播放音乐,每当应用程序启动。 我试过这个: – (void)awakeFromNib { NSString *path = [[NSBundle mainBundle] pathForResource:@"musicamenu" ofType:@"mp3"]; AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; [theAudio play]; }

在后台播放AVAudioPlayer的一个实例

我的应用程序中有几个AVAudioPlayer实例(在单独的类中)。 我为一个实例添加了多任务function,但现在所有audio都在后台播放。 我添加了“应用程序播放audio”键给我的plist和: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil]; 我的class级。 我怎样才能将这个代码只定位到AVAudioPlayer的一个实例?

在locking屏幕上设置和访问iOS查找栏

我正在使用AVQueuePlayer / AVFoundation在iOS应用程序中播放audio文件。 我已经设置了MPNowPlayingInfoCenter现在正在播放像专辑标题,艺术家,艺术品这样的信息 NSMutableDictionary *albumInfo = [[NSMutableDictionary alloc] init]; MPMediaItemArtwork *artworkP; UIImage *artWork = [UIImage imageNamed:album.imageUrl]; [albumInfo setObject:album.title forKey:MPMediaItemPropertyTitle]; [albumInfo setObject:album.auther forKey:MPMediaItemPropertyArtist]; [albumInfo setObject:album.title forKey:MPMediaItemPropertyAlbumTitle]; [albumInfo setObject:artworkP forKey:MPMediaItemPropertyArtwork]; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:albumInfo] 并在应用程序委托中访问远程事件进行播放,暂停,接下来,从locking屏幕上一个事件。 但是search栏不可访问,即使我没有find任何设置search属性的选项。 我想设置seek属性,并希望访问我的应用程序中的查找滑块更改事件。

录制video并同时播放audioios

我想同时录制video和播放audio。 当开始录制video时,预装audio开始播放,当停止录像时,audio也停止播放。 我尝试使用第三方库“ SwiftyCam ”( https://github.com/Awalz/SwiftyCam )录制video,并在开始写入video录制文件时以委托方法开始播放audio。 主要ViewCOntroller代码如下: override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) var temp = Data() let audioPath = Bundle.main.path(forResource: "ab1-FAST", ofType: "mp3") temp = FileManager.default.contents(atPath: (audioPath)!)! do { player = try AVAudioPlayer(data: temp) } catch let error { print(error) } self.configureAudioSession() player!.delegate = self self.player!.prepareToPlay() } // MARK: – // MARK: […]

什么是在iOS 10新的键盘点击系统声音ID?

一般 我正在开发第三方键盘,目前正试图模仿苹果在iOS 10b4中推出的新键盘点击。 现在的情况 常规的点击声音可以使用AudioServicesPlaySystemSound(1104)播放,但我似乎无法find两个新的其他声音的系统声音ID。 我发现他们的.caf等价物的位置,但是那些使用AVAudioPlayer调整它们的音量之后就太吵了。 题 是否有可能获得新的点击声音的系统声音ID? 额外 如果有人需要.caf文件path供个人使用,在这里它们是: /System/Library/Audio/UISounds/key_press_click.caf /System/Library/Audio/UISounds/key_press_delete.caf /System/Library/Audio/UISounds/key_press_modifier.caf

使用AVPlayer播放时如何将audio连接到蓝牙

我正在使用AVPlayer从url播放audio,但是当iPhone连接到蓝牙设备,它不是通过蓝牙播放,如何通过蓝牙播放,如果它连接,我看到在SO中的一些职位,但没有一个是明确解释。 以下是我的代码。 -(void)playselectedsong{ AVPlayer *player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]]; self.songPlayer = player; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[songPlayer currentItem]]; [self.songPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; [self.songPlayer play]; } – (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == songPlayer && [keyPath isEqualToString:@"status"]) { if (songPlayer.status == AVPlayerStatusFailed) { […]

Soundcloud iOS API – 从链接播放声音

我想在我的应用程序中使用Soundcloud API播放公共声音。 在networkingsearch后,我find了一个办法,但是我不能让我的代码工作。 以下是我尝试播放声音的代码: NSString *publicTrackUrlString = @"https://soundcloud.com/miroslav-osipovic/the-cat-empire-the-lost-song"; NSString *urlString = [NSString stringWithFormat:@"%@?client_id=64a52bb31abd2ec73f8adda86358cfbf", publicTrackUrlString]; [SCRequest performMethod:SCRequestMethodGET onResource:[NSURL URLWithString:urlString] usingParameters:nil withAccount:nil sendingProgressHandler:nil responseHandler:^(NSURLResponse *response, NSData *data, NSError *error) { NSError *playerError; player = [[AVAudioPlayer alloc] initWithData:data error:&playerError]; [player prepareToPlay]; [player play]; }];