我播放视频m3u8。
我尝试使用let videoAssetSource = AVAsset(url: videoURL)
但videoAssetSource.tracks(withMediaType: .video).count
始终返回0。
当我使用链接mp4这是成功的。
如何获得列表质量链接m3u8支持,并在播放视频时更改质量。
最佳答案
您需要为播放机项上的属性轨迹订阅一个观察者:
//Define this variable globally
var observers:[NSKeyValueObservation]? = [NSKeyValueObservation]()
//Find tracks
let videoAssetSource = AVAsset(url: videoURL)
let playerItem = AVPlayerItem(asset: videoAssetSource)
let tracksObserver = self.playerItem.observe(\.tracks, options: [.old, .new]) { (item, change) in
for track in item.tracks {
let _assetTrack:AVAssetTrack? = track.assetTrack
if let assetTrack = _assetTrack {
if assetTrack.mediaType == .video {
//we found a video track
}
}
}
}
//Keep observer reference
observers?.append(tracksObserver)
我使用基于Swift 4块的键值观察器,但如果需要,可以使用observeValue(forKeyPath:…)。