получить натуральный размер и список разрешений видео m3u8 - PullRequest
0 голосов
/ 28 сентября 2018

Я играю видео m3u8.

Я пытаюсь использовать let videoAssetSource = AVAsset(url: videoURL), но videoAssetSource.tracks(withMediaType: .video).count всегда возвращает 0. Когда я использую ссылку mp4, это успешно.

Как получить ссылку качества списка m3u8поддержка и изменение качества при воспроизведении видео.

1 Ответ

0 голосов
/ 28 сентября 2018

Вам необходимо подписать наблюдателя на дорожки свойств элемента проигрывателя:

//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, но вы можете использовать наблюдающее значение (forKeyPath:…), еслиты хочешь.

...