2010-02-24 27 views
5

Có ai có liên kết đến hướng dẫn để thêm thanh tiến trình phát lại vào AVAudioPlayer không?Tiến trình phát lại avaudioplayer

Tôi đã tìm kiếm rộng rãi trên trang web này và trên google vô ích

Trả lời

16

Tôi đã tìm ra và nó không quá tệ.

Chỉ cần cập nhật nó trong một giờ

playbackTimer=[NSTimer scheduledTimerWithTimeInterval:0.5 
            target:self 
               selector:@selector(myMethod:) 
            userInfo:nil 
            repeats:YES]; 

} 


-(void)myMethod:(NSTimer*)timer { 

    float total=audioPlayer.duration; 
    float f=audioPlayer.currentTime/total; 

    NSString *str = [NSString stringWithFormat:@"%f", f]; 

    playbackProgress.progress=f; 

    NSLog(str); 
} 
0

Thêm một thời gian quan sát định kỳ và cập nhật các thanh trượt - trong Swift nó sẽ là như thế này -

func addPlayBackSlider() 
    { 
    playbackSlider = UISlider(frame:CGRect(x:10, y:300, width:300, height:20)) 
    playbackSlider?.minimumValue = 0 
    let duration : CMTime = playerItem.asset.duration 
    let seconds : Float64 = CMTimeGetSeconds(duration) 
    playbackSlider?.maximumValue = Float(seconds) 
    playbackSlider?.isContinuous = true 

    //If you want to manually set progressBar 
    playbackSlider?.addTarget(self, action: #selector(AddAudioController.playbackSliderValueChanged(_:)), for: .valueChanged) 

    //Here is the Observer 
    player!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main) { (CMTime) -> Void in 
     if self.player!.currentItem?.status == .readyToPlay { 
      let time : Float64 = CMTimeGetSeconds(self.player!.currentTime()); 
      self.playbackSlider!.value = Float (time); 
     } 
    } 
    } 

    //If you want to manually set progressBar 
    func playbackSliderValueChanged(_ playbackSlider:UISlider) 
    { 
    let seconds : Int64 = Int64(playbackSlider.value) 
    targetTime = CMTimeMake(seconds, 1) 
    print(targetTime) 

    player!.seek(to: targetTime) 

    if player!.rate == 0 
    { 
     player?.play() 
     playButton!.setTitle("Pause", for: UIControlState.normal) 
    } 
} 
+0

Hope this helps :) – Shawon91

+0

Thêm một người quan sát thời gian định kỳ không may chỉ hoạt động cho AVPlayer chứ không phải AVAudioPlayer. –

Các vấn đề liên quan