我播放视频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:…)。

09-18 03:56
查看更多