我有一些amr
格式的音频文件,我无法转换为任何其他格式,有没有办法在IOS中使用swift (AVFoundation)
播放这些文件?
我试过这段代码
var audioPlaying = AVAudioPlayer()
audioPlaying = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath:
NSBundle.mainBundle().pathForResource("music", ofType: "mp3")!), error: nil)
audioPlaying.play()
但是当我在"amr"
中使用ofType:
时,收到错误的文件不存在。
答案 0 :(得分:4)
Opencore-AMR iOS框架可能是您最好的起点。
github.com/feuvan/opencore-amr-iOS
此处还有关于如何为iOS编译它的指南,因为它不是一件容易的事:
http://swati-ios.blogspot.co.uk/2013/01/compile-opencore-amr-for-ios-projects.html
答案 1 :(得分:3)
AMR
格式为no longer supported(自iOS 4.3
起)。
如果你想播放或录制,你必须使用一些工具(如opencore-amr
库)to change the format。
答案 2 :(得分:1)
以下是在Swift 4和Xcode 9中完美运行的解决方案:
1-使用以下库通过迦太基将Amr解码为Wav: https://github.com/teambition/AMRAudioSwift
有关如何使用Carthage在Xcode上安装FrameWork的信息,请访问以下链接: https://github.com/Carthage/Carthage
将这些库导入您的代码中:
import AMRAudioSwift
import AVFoundation
2-使用以下代码播放AMR文件:
var player: AVAudioPlayer?
func playAmr() {
guard let url = Bundle.main.url(forResource: "Your Amr File", withExtension: "amr", subdirectory:"your Amr Parent Folder") else { return }
do {
let audioRecorder = AMRAudioRecorder()
audioRecorder.volume = 3
audioRecorder.delegate = self as? AMRAudioRecorderDelegate
let wavData = AMRAudio.decodeAMRDataToWAVEData(amrData: try!Data(contentsOf:url))
player = try AVAudioPlayer(data:wavData , fileTypeHint: AVFileType.wav.rawValue)
guard let player = player else { return }
player.play()
} catch let error {
print(error.localizedDescription)
}
}
祝您AMR文件运气好!