首页 文章

将AVPlayer回放5秒

提问于
浏览
5

如何将流回放5秒?

这是我在viewDidLoad中的流媒体代码:

AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://groove.wavestreamer.com:7321/listen.pls?sid=1"]];

[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:nil];

music = [[AVPlayer playerWithPlayerItem:playerItem] retain];
[music play]; 

music = [[AVPlayer playerWithPlayerItem:playerItem] retain];
[music play];

谢谢你的回答......

2 回答

  • 10
    - (NSTimeInterval)currentPlaybackTime
    {
        return CMTimeGetSeconds(self.playerView.player.currentItem.currentTime);
    }
    
    
    - (void)setCurrentPlaybackTime:(NSTimeInterval)time
    {
        CMTime cmTime = CMTimeMakeWithSeconds(time, NSEC_PER_SEC);
        [self.playerView.player.currentItem seekToTime:cmTime];
    }
    
    
    - (IBAction)scanBackward
    {
        self.currentPlaybackTime -= 5.0f;
    }
    
  • 3

    在Swift 3中,

    fileprivate let seekDuration: Float64 = 5
    
    
    @IBAction func doForwardJump(_ sender: Any) {
        guard let duration  = player.currentItem?.duration else{
            return
        }
        let playerCurrentTime = CMTimeGetSeconds(player.currentTime())
        let newTime = playerCurrentTime + seekDuration
    
        if newTime < (CMTimeGetSeconds(duration) - seekDuration) {
    
            let time2: CMTime = CMTimeMake(Int64(newTime * 1000 as Float64), 1000)
            player.seek(to: time2, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
    
        }
    }
    @IBAction func doBackwardJump(_ sender: Any) {
    
        let playerCurrentTime = CMTimeGetSeconds(player.currentTime())
        var newTime = playerCurrentTime - seekDuration
    
        if newTime < 0 {
            newTime = 0
        }
        let time2: CMTime = CMTimeMake(Int64(newTime * 1000 as Float64), 1000)
         player.seek(to: time2, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
    
    
    }
    

相关问题