Продолжительность звука возвращается в AVQueuePlayer. - PullRequest
0 голосов
/ 14 февраля 2019

Когда я пытаюсь воспроизвести файл .wav с сервера, используя AVQueuePlayer, он возвращает длительность как nan.

Я использовал этот код, чтобы получить длительность

audioPlayer.currentItem?.duration.seconds 
audioPlayer.currentItem?.asset.duration.seconds

И я уверен, что файл .wav, который я использую, не поврежден, так как он используется приложением для Android, и они могутполучить продолжительность.

Ниже код, который я использовал, прекрасно работает для .mp3.но не для .wav

if let url = URL(string: urlString) {
            audioAsset = AVURLAsset.init(url: url)

            if let audioAsset = audioAsset {

                let keys = ["playable"]

                   audioAsset.loadValuesAsynchronously(forKeys: keys, completionHandler: {

                    let playableStatus = audioAsset.statusOfValue(forKey: keys[0], error: nil)
                    switch playableStatus {

                    case .unknown,  .loading,  .failed,  .cancelled:
                        return

                    case .loaded:

                        DispatchQueue.main.async {

                            let playerItem = AVPlayerItem.init(asset: audioAsset)
                            self.audioPlayer.insert(playerItem, after: nil)
                            self.audioPlayer.play()

                            })
                        }
                        break
                    }
                })
            }
        }
...