Tốt nhất là bạn có thể muốn sử dụng AVFoundation . Nó cung cấp tất cả các yếu tố cần thiết để làm việc với phương tiện nghe nhìn.
Cập nhật: Tương thích với Swift 2 , Swift 3 và Swift 4 theo đề xuất của một số bạn trong các nhận xét.
Swift 2.3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
let url = NSBundle.mainBundle().URLForResource("soundName", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOfURL: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
}
Swift 3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
let player = try AVAudioPlayer(contentsOf: url)
player.play()
} catch let error {
print(error.localizedDescription)
}
}
Swift 4 (tương thích iOS 13)
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
/* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
/* iOS 10 and earlier require the following line:
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */
guard let player = player else { return }
player.play()
} catch let error {
print(error.localizedDescription)
}
}
Đảm bảo thay đổi tên của giai điệu cũng như phần mở rộng .
Các tập tin cần phải được nhập đúng ( Project Build Phases
> Copy Bundle Resources
). Bạn có thể muốn đặt nó vào assets.xcassets
để thuận tiện hơn.
Đối với các tệp âm thanh ngắn, bạn có thể muốn sử dụng các định dạng âm thanh không nén như .wav
vì chúng có chất lượng tốt nhất và tác động cpu thấp. Tiêu thụ không gian đĩa cao hơn không phải là một vấn đề lớn đối với các tệp âm thanh ngắn. Các tệp càng dài, bạn có thể muốn sử dụng định dạng nén, .mp3
v.v. Trang. Kiểm tra các định dạng âm thanh tương thích của CoreAudio
.
Sự thật thú vị: Có những thư viện nhỏ gọn giúp cho việc phát âm thanh trở nên dễ dàng hơn. :)
Ví dụ: SwiftySound