Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios m3u8视频的AVURLAsset持续时间为0_Ios_Swift_Avfoundation_Avurlasset - Fatal编程技术网

Ios m3u8视频的AVURLAsset持续时间为0

Ios m3u8视频的AVURLAsset持续时间为0,ios,swift,avfoundation,avurlasset,Ios,Swift,Avfoundation,Avurlasset,我正在尝试获取m3u8格式的远程视频(通过http流传输)的持续时间。对于某些本地持续时间较长的视频,无法获取资源的持续时间。 我目前正在使用KVO捕获AVPlayerItem的.Ready状态,然后调用委托方法 let asset = AVURLAsset(URL: url) let playerItem = AVPlayerItem(asset: asset!) let player = AVPlayer(playerItem: playerItem!) .... override fu

我正在尝试获取m3u8格式的远程视频(通过http流传输)的持续时间。对于某些本地持续时间较长的视频,无法获取资源的持续时间。 我目前正在使用KVO捕获AVPlayerItem的.Ready状态,然后调用委托方法

let asset = AVURLAsset(URL: url)
let playerItem = AVPlayerItem(asset: asset!)
let player = AVPlayer(playerItem: playerItem!)

....

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    if object as? AVPlayerItem == player?.currentItem {
        if keyPath == "status" {
            guard let status = player?.currentItem?.status
                else { return }

            delegate?.videoViewController(self, statusDidChange: status)
        }
    }
}
print(asset?.duration)
print(playerItem?.duration)
print(playerItem?.asset.duration)
print(playerItem?.tracks[0].assetTrack.asset?.duration)