将音频文件下载到文件管理器需要从本地路径播放
Posted
技术标签:
【中文标题】将音频文件下载到文件管理器需要从本地路径播放【英文标题】:Downloaded an Audio file into File Manager need to play it from local path 【发布时间】:2019-02-05 22:32:41 【问题描述】:我正在使用音频播放器应用程序,并且我有一个离线下载选项,当用户单击下载按钮时,它应该开始下载并将其保存到本地。我已经使用文件管理器 URLSession 保存了它。
我尝试过获取和分离目标网址。我正在使用点唱机第三方播放歌曲。示例文件位置是
file:///var/mobile/Containers/Data/Application/BBB9AF1C-D87C-4C40-9F29-AD89062A20E2/Documents/05-KARMA-YOGA.mp3
if let audioUrl = URL(string: audioTobedownloaded)
// then lets create your document folder url
let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
// lets create your destination file url
let destinationUrl = documentsDirectoryURL.appendingPathComponent(audioUrl.lastPathComponent)
print(destinationUrl)
真正的问题是我应该如何播放我在文件管理器中下载的音频。
【问题讨论】:
AVAudioPlayer 有一个函数,你可以将文件路径传递给 【参考方案1】:func findFilesWith(extensionType: String) -> [URL]
var matches = [URL]()
let fileManager = FileManager.default
let files = fileManager.enumerator(atPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
// *** this section here adds all files with the chosen extension to an array ***
for item in files!
let fileURL = item as! URL
if (fileURL.pathExtension == extensionType)
matches.append(fileURL)
return matches
您可以使用此方法获取各种扩展名类型的文件。
在你的情况下使用 mp3 作为扩展类型
尝试以下方法从获取的 url 播放音频
func play(url:URL)
print("playing \(url)")
do
let player = try AVAudioPlayer(contentsOf: url)
player.prepareToPlay()
player.volume = 1.0
player.play()
catch let error as NSError
print(error.localizedDescription)
catch
print("AVAudioPlayer init failed")
【讨论】:
以上是关于将音频文件下载到文件管理器需要从本地路径播放的主要内容,如果未能解决你的问题,请参考以下文章
哪个 iOS 音频 API 设计用于以低延迟从磁盘流式传输大型本地音频文件?
将变量从 PHP/MySQL 传递给 actionscript 以播放音频文件