通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS

Posted

技术标签:

【中文标题】通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS【英文标题】:Monitor downloaded bytes when streaming via AvPlayerItem and AvPlayer - iOS 【发布时间】:2012-10-11 13:39:46 【问题描述】:

我想在从 URL 流式传输 mp3 并将其打印到 IULabel 时监控下载的字节。我找不到任何简单的方法来做到这一点。

“AVPlayerItemAccessLog”呢,有信息吗?我不知道如何使用它?有人知道如何获取这些信息吗?

下面是我播放流的代码:

-(void)play

    /*Allow radio to run in background*/
    [[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 

    /*Gets the url fra sender*/
    NSString *urlString=  self.radioStation.url;
    NSURL *url = [NSURL URLWithString:urlString];

    /*Stop the radio if its play or have info*/
    if(self.avPlayerItem)
    
        [self stop];

    


    /*Sets the Avplayeritem*/
    self.avPlayerItem = [AVPlayerItem playerItemWithURL:url];

    /*Listen for changes in the avPlayerItem*/    
    [self.avPlayerItem addObserver:self forKeyPath:@"status" options:0 context:nil];   

    /*Sets the avplayer with avplayeritem*/
    self.avPlayer = [AVPlayer playerWithPlayerItem:self.avPlayerItem];

    /*Sends loading info to the nortification*/
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Loading" object:self];

    /*Plays the radio*/
    [self.avPlayer play];

【问题讨论】:

【参考方案1】:

您需要在 AVPlayerItem 上使用 KVO 来获取此信息。像这样的:

[self.player.currentItem addObserver:self
                          forKeyPath:@"loadedTimeRanges"
                             options:NSKeyValueObservingOptionNew
                             context:NULL];

然后是标准的观察者方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

    // Get the player item's loadedTimeRanges value here.

在释放播放器项目之前不要忘记移除观察者。

【讨论】:

以上是关于通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVPlayer、AVPlayerItem 和 AVPlayerAsset 有啥区别吗?

查找与 AVPlayerItem 关联的 AVPlayer

从Gallery Asset中检索AVPlayerItem

AVPlayerItem 不播放视频,即使其状态为 `readyToPlay` 并且 `isPlaybackLikelyToKeepUp` 为 true

将 AVPlayerItem 保存到文档目录

AVPlayerItem 暂停直播 URL?