使用AVURLAsset播放远程视频文件

时间:2012-06-11 09:13:19

标签: ios video avurlasset

我想使用AVURLAsset播放视频文件,但在服务器上播放非本地文件。我已经读过AVURLAsset不能直接用于远程文件。 我读了Stack Overflow的另一个链接

AVURLAsset cannot load with remote file

此链接有一些使用AVURLAsset播放远程文件的方法,但我无法完全理解它。我的观察者没有被召唤。有人可以帮帮我吗?实际上我不想出于某种原因使用AVPlayer播放视频。我从AVAsset抓取帧然后在OpenGL中将它们渲染为纹理,所以我只需要通过AVURLAsset来做这个。

以下是查看

的代码
-(void) startPlayer
   { 
    NSURL *url=[NSURL fileURLWithPath:@"http://gamooz.com/wildlife.mp4"]; 
    pItem = [AVPlayerItem playerItemWithURL:url]; 
    player = [AVPlayer playerWithPlayerItem:pItem];
    [player play]; 
    pItem addObserver:self forKeyPath:@"status" options:0 context:nil]; 
   }

 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:    (NSDictionary *)change context:(void *)context 
   { 
     NSLog(@"heyy"); 
     if ([keyPath isEqualToString:@"status"])
        {
          AVPlayerItem *pItemTemp = (AVPlayerItem *)object; 
          if (pItemTemp.status == AVPlayerItemStatusReadyToPlay) 
             { 
                ///now i can use playerItem asset
                 asset = (AVURLAsset *)pItemTemp.asset; 
             }
        } 
   }

但观察者永远不会被召唤。那是为什么?

此外,我将观察者代码放在其他函数中,并尝试检查playerItem是否已准备好播放

 -(void) checkForPlayer
   {
  if (pItem.status == AVPlayerItemStatusReadyToPlay) 
   {
     asset = (AVURLAsset *)pItem.asset;
   }
   }

永远不会让状态等于准备好。

0 个答案:

没有答案