ios - 音频持续时间在 AVQueuePlayer 中返回 nan
问题描述
当我尝试.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
}
})
}
}
解决方案
推荐阅读
- c# - 如何计算 C# 项目的代码注释比率?
- sql - SQL 中的 Case When 函数有问题
- android - 当我从列表视图中删除项目时刷新片段?
- azure - 在 AKS 中使用 type=LoadBalancer 创建服务
- javascript - 我想使用不同的语法以方便调试。为什么它不起作用?
- bash - Bash if then else 语法
- node.js - 使用 Windows 10 使用 nodemon 的 Docker 热重载节点应用程序
- docker - Gitlab Registry Docker 推送失败并出现 EOF
- java - 在 JavaFX 中创建两个单独的阶段
- dialogflow-es - 使用 Dialogflow 在 Google Home 上超时