AVAudioPlayer 如何播放快或慢文件

Posted

技术标签:

【中文标题】AVAudioPlayer 如何播放快或慢文件【英文标题】:AVAudioPlayer how to play fast or slow file 【发布时间】:2011-09-19 18:26:59 【问题描述】:

我只需要慢慢或快速地听文件。任何帮助将不胜感激

【问题讨论】:

AVPlayer 不能这样做。调整速度时是否希望音频音高保持不变? 查看question 【参考方案1】:

AVAudioplayer 做不到,AVPlayer 可以。

       // play audio file as NSURL *url;
    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]
                                                        forKey:AVURLAssetPreferPreciseDurationAndTimingKey];

    AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:url options:options];
    NSString *tracksKey = @"tracks";
    [urlAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
     ^

         // Completion handler block.
         dispatch_async(dispatch_get_main_queue(),
                        ^
                            NSError *error = nil;
                            AVKeyValueStatus status = [urlAsset statusOfValueForKey:tracksKey error:&error];

                            if (status == AVKeyValueStatusLoaded) 
                                self.avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
                                [avPlayer play];

                                avPlayer.rate = 0.5;
                            
                            else 
                                // You should deal with the error appropriately.
                                NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);

                            

                        );
     ];

【讨论】:

这会给你带来可怕的音质。 ***.com/questions/19374839/…【参考方案2】:

谢谢,但我已经解决了如下:

安装 cocos2d http://www.cocos2d-iphone.org/download

[[SimpleAudioEngine sharedEngine] playEffect: (NSString *) pitch (float32) pan (float32) gain (float32)]

它简单而有效....

【讨论】:

【参考方案3】:

在 Swift 3.0 中会是这样 -

    audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
    audioP.enableRate = true
    audioP.prepareToPlay()
    audioP.rate = 1.5
    audioP.play()

希望这会有所帮助:)

【讨论】:

以上是关于AVAudioPlayer 如何播放快或慢文件的主要内容,如果未能解决你的问题,请参考以下文章

在其他 swift 文件中调用时,AVAudioPlayer 不会播放声音

我想用 AVAudioPlayer 在我的服务器上播放 mp3 文件

播放音乐时,我的音频应用程序中没有收到通知或消息的声音 | AV音频播放器

如何在 Swift 5 中使用 AV 音频播放器在特定时间间隔内快进或快退音频(如歌曲)?

iPhone:MPMusicPlayerController 停止 AVAudioPlayer

如何在 AVAudioplayer 中播放多个文件