AVURLAsset cannot load with remote file

后端 未结 1 800
清歌不尽
清歌不尽 2021-01-06 01:20

I have a problem using AVURLAsset.

NSString * const kContentURL = @

\"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8\";
...

    NSURL *con         


        
相关标签:
1条回答
  • 2021-01-06 01:36

    You can't directly create an AVURLAsset for an HTTP Live stream as stated in Apple's AV Foundation Programming Guide. You'll have to create an AVPlayerItem with the stream url and instantiate an AVPlayer with it

    AVPlayerItem *pItem = [AVPlayerItem playerItemWithURL:theStreamURL];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:pItem];
    

    If you need to have access to the AVURLAsset behind that you could follow these steps.

    Step 1/ register for changes of the status property of the player item

    [playerItem addObserver:self forKeyPath:@"status" options:0 context:nil];
    

    Step 2/ in observeValueForKeyPath:ofObject:change:context:

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                            change:(NSDictionary *)change context:(void *)context { 
        if ([keyPath isEqualToString:@"status"]) {
            AVPlayerItem *pItem = (AVPlayerItem *)object;
            if (pItem.status == AVPlayerItemStatusReadyToPlay) {
                // Here you can access to the player item's asset
                // e.g.: self.asset = (AVURLAsset *)pItem.asset;
            }
        }   
    }
    

    EDIT: corrected the answer

    0 讨论(0)
提交回复
热议问题