所有人,
我需要创建一个样本音频播放器和录音机,它没有错误,但它没有播放,也许没有录音。。有什么想法吗?

   @IBAction func Play(AnyObject)
   {
    println ("Play")

    let path = NSBundle.mainBundle().pathForResource("171010", ofType:"m4a")
    let fileURL = NSURL(fileURLWithPath: path)
    player = AVAudioPlayer(contentsOfURL: outputFileURL, error: nil)
    player.prepareToPlay()
    player.delegate = self
    player.play()

    }
    @IBAction func Record(AnyObject)
    {



        filename = "171010.m4a"
        let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
        var pathComponents = [paths.lastObject as String, filename as String]
        outputFileURL = NSURL.fileURLWithPathComponents(pathComponents)

        settings.setValue(kAudioFormatMPEG4AAC, forKey: AVFormatIDKey)
        settings.setValue(44100.0, forKey: AVSampleRateKey)
        settings.setValue(2, forKey: AVNumberOfChannelsKey)


        recorder = AVAudioRecorder(URL: outputFileURL, settings: settings, error: &error)
        recorder.delegate = self;
        recorder.prepareToRecord()
        recorder.record()

    }

    @IBAction func Stop(AnyObject)
    {
        recorder.stop()
        println("Stop")
    }

最上面的是:
class MainMenu: UIViewController , AVAudioRecorderDelegate , AVAudioPlayerDelegate {

    var filename: String!
    var outputFileURL: NSURL!
    var recorder: AVAudioRecorder!
    var error: NSError?
    var settings: NSMutableDictionary = NSMutableDictionary()
    var player : AVAudioPlayer! = nil

有什么想法吗?我不知道它是否在录制和创建文件。当我得到URL时,播放函数为nill。这是连接到一个故事板与按钮。在斯威夫特这个简单的东西里,任何帮助都是很好的。
我把它改成这个了,这个应该有用吗?有人能建议吗?
@IBAction func Play(AnyObject)
   {
    println ("Play")
    var audioPlayer = AVAudioPlayer()
    filename = "171010.m4a"
    let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    var pathComponents = [paths.lastObject as String, filename as String]
    outputFileURL = NSURL.fileURLWithPathComponents(pathComponents)
    audioPlayer = AVAudioPlayer(contentsOfURL: outputFileURL, error: nil)
    audioPlayer.prepareToPlay()
    audioPlayer.delegate = self
    audioPlayer.play()
    }

@IBAction func Record(AnyObject)
    {



        filename = "171010.m4a"
        let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
        var pathComponents = [paths.lastObject as String, filename as String]
        outputFileURL = NSURL.fileURLWithPathComponents(pathComponents)

        settings.setValue(kAudioFormatMPEG4AAC, forKey: AVFormatIDKey)
        settings.setValue(44100.0, forKey: AVSampleRateKey)
        settings.setValue(2, forKey: AVNumberOfChannelsKey)


        recorder = AVAudioRecorder(URL: outputFileURL, settings: settings, error: &error)
        recorder.delegate = self;
        recorder.prepareToRecord()
        recorder.record()



    }

最佳答案

玩家需要是一个ivar,这样才不会在玩之前从堆栈中弹出。
如果您需要更多信息,这里有一个github project和一个功能正常的录音机。
另外,约定是用小写字符开始函数名。

关于xcode - AVRecorder和AVPlayer swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25681502/

10-09 09:56