Ios 如何从Swift file Manager播放音频文件?
我正在尝试播放我从S3下载的一个文件,在找到该文件并将URL传递给音频播放器后,音频文件将不会播放/丢失 这是完整的Ios 如何从Swift file Manager播放音频文件?,ios,swift,iphone,audio,Ios,Swift,Iphone,Audio,我正在尝试播放我从S3下载的一个文件,在找到该文件并将URL传递给音频播放器后,音频文件将不会播放/丢失 这是完整的文件URL:file:///var/mobile/Containers/Data/Application/61F2FC20-4C62-4263-B147-0010805BC0FA/Documents/Dump%20Trucks.mp3 这是我的密码: func playAudio(){ var soundClip: AVAudioPlayer?
文件URL
:file:///var/mobile/Containers/Data/Application/61F2FC20-4C62-4263-B147-0010805BC0FA/Documents/Dump%20Trucks.mp3
这是我的密码:
func playAudio(){
var soundClip: AVAudioPlayer?
if let directory = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.allDomainsMask, true).first{
let path = NSURL(fileURLWithPath: directory).appendingPathComponent("Dump Trucks.mp3")
print("The path is \(String(describing: path))")
do {
soundClip = try AVAudioPlayer(contentsOf: path!)
soundClip?.play()
} catch {
print("Error: Audio File missing.")
}
}
}
问题是您的播放器是一个局部变量。因此,你的方法结束了,玩家在有机会开始玩之前就被摧毁了!将其声明为实例属性 所以 变成
var soundClip: AVAudioPlayer?
func playAudio(){
这可能无法解决您的所有问题,但如果您不这样做,您肯定永远听不到声音。如果您想从设备播放音频,请使用
MPMediaItem
。它将从设备中检索所有音频。还有一件事我想知道,您将在这条线路中获得正确的路径//print(“路径是(字符串(描述:path))”)@RB's-是的,它打印/返回上述完整的文件URL。var-soundClip:AVAudioPlayer?
使用var-soundClip=AVAudioPlayer()
更改此选项,您可以为Swift 4检查此解决方案+
import Foundation
import AVFoundation
final class MediaPlayer {
static var player = AVAudioPlayer()
class func play() {
do {
let file = Bundle.main.url(forResource: "file_name", withExtension: "mp3")!
player = try AVAudioPlayer(contentsOf: file)
player.numberOfLoops = 0 // loop count, set -1 for infinite
player.volume = 1
player.prepareToPlay()
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
try AVAudioSession.sharedInstance().setActive(true)
player.play()
} catch _ {
print("catch")
}
}
}
import Foundation
import AVFoundation
final class MediaPlayer {
static var player = AVAudioPlayer()
class func play() {
do {
let file = Bundle.main.url(forResource: "file_name", withExtension: "mp3")!
player = try AVAudioPlayer(contentsOf: file)
player.numberOfLoops = 0 // loop count, set -1 for infinite
player.volume = 1
player.prepareToPlay()
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
try AVAudioSession.sharedInstance().setActive(true)
player.play()
} catch _ {
print("catch")
}
}
}