Tag: avaudioplayer

如何阻止AVAudioPlayer在数据到达之前重复执行?

通过将numberOfLoops属性设置为-1,我正在使用AVAudioPlayer播放循环声音。 我想以编程方式控制循环速率,所以我正在像这样加载我的audio数据: NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Click" ofType:@"aif"]; NSMutableData *soundData = [NSMutableData dataWithContentsOfFile:soundFilePath]; 然后在初始化audio播放器之前更改其长度: int loopDuration = .5; // seconds int desiredDataLength = loopDuration * 2 * 44100; // this assumes 16-bit mono data [soundData setLength:desiredDataLength]; NSLog(@"data: %@", soundData); // this shows the data after our length change AVAudioPlayer soundPlayer = [[AVAudioPlayer alloc] initWithData:soundData […]

触发AVAudioPlayer停止所有的声音和播放select,除非单击播放(选定)button

我正在创build一个可以一次播放一个声音的声卡应用程序。 我想要一个UIButton能够阻止所有其他的声音播放,并开始播放自己的声音点击。 我有一个AVAudioPlayer设置播放所有的声音(我点击时改变声音文件的URL,因为我只想一次播放一个声音不是问题)。 我想知道如何停止所有其他的声音,并按下button播放声音,但是如果点击的button是当前正在播放声音的button,button只会停止声音。 我知道这是可以通过去分开audioplayers和触发停止事件,但我想避免复制和粘贴代码,并尽可能保持高效,加上我只想/需要一个audioplayer。 这是我的代码: – (IBAction)play { if (audioPlayer.playing == NO) { NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/k.mp3", [[NSBundle mainBundle] resourcePath]]]; NSError *error; [audioPlayer release]; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; audioPlayer.numberOfLoops = 0; AVAudioSession *audiosession = [AVAudioSession sharedInstance]; [audiosession setCategory:AVAudioSessionCategoryAmbient error:nil]; [audioPlayer play]; [start setTitle:@"Stop" forState:UIControlStateNormal]; } else if (audioPlayer.playing == YES) […]

audio文件不能在iPhone 5中播放

我使用一个代码来播放.cafaudio文件,相同的代码适用于iPhone 4s和iPad 2,但在iPhone 5中完全不能播放… 这是代码: -(IBAction)checkSound:(id)sender { NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Lunatic.caf", [[NSBundle mainBundle] resourcePath]]]; NSLog(@"%@",url); NSError *error; self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; self.audioPlayer.numberOfLoops = 0; self.audioPlayer.volume = 1; NSLog(@"log audioplayer: %@",audioPlayer); if (audioPlayer != nil) { [self.audioPlayer prepareToPlay]; [self.audioPlayer play]; } if (audioPlayer.playing == NO) { NSLog(@"not playing, error: %@",error); } if([[NSFileManager […]

如何将FLAC文件转换为ios中的wav文件?

我想创build一个支持Flac格式的audio文件的audio播放器。为此我试图实现flac到wav转换的algorithm,如下所示 请帮帮我。 所有这一切都给了我错误 错误:初始化解码器:FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE static FLAC__bool write_little_endian_uint16(FILE *f, FLAC__uint16 x) { return fputc(x, f) != EOF && fputc(x >> 8, f) != EOF ; } static FLAC__bool write_little_endian_int16(FILE *f, FLAC__int16 x) { return write_little_endian_uint16(f, (FLAC__uint16)x); } static FLAC__bool write_little_endian_uint32(FILE *f, FLAC__uint32 x) { return fputc(x, f) != EOF && fputc(x >> 8, f) != EOF […]

当我从视图导航到视图时,如何让音乐持续存在?

所以,我已经掌握了使用iOS中的一种视图来播放声音/音乐的艺术,但是现在我正在尝试为音乐艺术家制作更强大的应用程序。 到目前为止,它涉及从“菜单”ViewController到他的“生物”,“显示时间”和“聆听室”等等。到目前为止,我创build了一个“AudioManager”类: import UIKit import AVFoundation import MediaPlayer class AudioManager: NSObject { let defaltSong = ["Hell&BackCaf/01 Black Sheep", "caf"] weak var delegate : PlayerDelegate? var musicPlayer1 = AVAudioPlayer() var trackNumber = 0 var musicAudioPath = NSBundle.mainBundle().pathForResource("Hell&BackCaf/01 Black Sheep", ofType: "caf") var musicAudioPathURL = NSURL() var error:NSError? = nil var songList = [["Hell&BackCaf/01 Black Sheep", "caf"], […]

如何在Singleton方法中实现AVAudioPlayer?

这是我的代码: class SomeAudioManager: NSObject { class var sharedInstance: SomeAudioManager{ struct Static { static var onceToken: dispatch_once_t = 0 static var instance: SomeAudioManager? = nil } dispatch_once(&Static.onceToken) { Static.instance = SomeAudioManager() } return Static.instance! } func audioView(songname: NSString,format: NSString) { let audioPlayer:ava audioPlayer=try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(songname, ofType:format)!), fileTypeHint: AVFileTypeMPEGLayer3) audioPlayer!.delegate=self; self.audioPlayer!.play() } } 该AVAudioPlayer是在NSObject下,但我不能实现它。 当键入让audioPlayer:AVAudio – […]

AVAudioPlayer在模拟器上工作,但不在真实设备上

当我播放录制的audio时,我得到这个错误: 致命错误:意外地发现零,而解包一个可选值 在这行代码中: SoundPlayer = try AVAudioPlayer(contentsOfURL: getFileURL()) 但是,除了真实的设备之外,它在模拟器上是完美的。 ViewController.Swift: import UIKit import AVFoundation class ViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate { @IBOutlet var PlayBTN: UIButton! @IBOutlet var RecordBTN: UIButton! var soundRecorder : AVAudioRecorder! var SoundPlayer : AVAudioPlayer! var fileName = "audioFile.m4a" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically […]

AVAudioPlayer获取错误的文件持续时间的iOS 10

我正在使用AVAudioPlayer对象来加载audio文件。 我已经检查了两个浏览器1)铬是获得确切的持续时间。 而2)Safari浏览器正在错误的文件持续时间。 我们已经使用了下面的代码, let soundData = NSData(contentsOf: url as URL) self.player = try AVAudioPlayer(data: soundData! as Data) self.player.delegate = self let currentSecond = self.player.duration //Second Option we had tried. let assets = AVURLAsset(url: url as URL, options: [ AVURLAssetPreferPreciseDurationAndTimingKey : Int(true)]) var t = Float() t = Float(CMTimeGetSeconds(assets.duration)) print(t) 有什么build议吗? 或者我错过了什么? 请指导我。

播放时audio播放器的持续时间会改

在播放audio文件的持续时间之前: audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; … [audioPlayer prepareToPlay]; duration = audioPlayer.duration; 我得到一个例如16.71s的持续时间。 然后在播放时每隔0.2秒取样,持续时间会改变。 它每1.2到1.6秒改变一次:16.71s,17.02s,17.23s,17.3s,17.3s,17.4s,17.3s,17.29s,17.3s,然后在最后2.5s停留在17.5s。 所以它上升和下降。 我在一个更新滑块位置的方法中进行采样,并显示已用时间和总持续时间。 你可以想象看起来真的很奇怪,看看持续时间(这是整数截断)从16岁到17岁。 此外,滑块的位置将随着所有漂移而closures。 有没有人有一个想法,为什么这是? 现在我们正在讨论的持续时间:有没有人知道为什么audio player.duration可以返回大约是[audioPlayer prepareToPlay]被省略的实际持续时间的两倍的值?

协调CACurrentMediaTime()和deviceCurrentTime

我正在尝试与AVAudioPlayer同步几个CABasicAnimations 。 我遇到的问题是,当AVAudioPlayer使用deviceCurrentTime时, CABasicAnimation使用CACurrentMediaTime()作为调度animation的参考点。 同样对于animation,使用CFTimeInterval ,而对于声音,它是NSTimeInterval (不知道是否像其他CF和NStypes“免费桥接”)。 我发现参考点也是不同的。 有没有办法确保声音和animation使用相同的参考点?