Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在avaudionode swift中播放歌曲特定时间_Ios_Swift_Avfoundation_Avaudioplayer_Avaudioplayernode - Fatal编程技术网

Ios 如何在avaudionode swift中播放歌曲特定时间

Ios 如何在avaudionode swift中播放歌曲特定时间,ios,swift,avfoundation,avaudioplayer,avaudioplayernode,Ios,Swift,Avfoundation,Avaudioplayer,Avaudioplayernode,我制作了一个简单的mp3播放器,它具有播放、暂停和停止特定歌曲的功能。在后台模式下播放的歌曲是指当我将播放器屏幕更改为另一个屏幕时,歌曲会连续播放,但如何在当前时间连续播放歌曲。但实际上,它是从起点重新开始的 代码: import UIKit import AVFoundation import CoreMotion import MediaPlayer import Foundation class ViewController: UIViewController { var audioE

我制作了一个简单的mp3播放器,它具有播放、暂停和停止特定歌曲的功能。在后台模式下播放的歌曲是指当我将播放器屏幕更改为另一个屏幕时,歌曲会连续播放,但如何在当前时间连续播放歌曲。但实际上,它是从起点重新开始的

代码:

import UIKit
import AVFoundation
import CoreMotion
import MediaPlayer
import Foundation

class ViewController: UIViewController {

var audioEngine = AVAudioEngine()
var playerNode = AVAudioPlayerNode()
let timeShift = AVAudioUnitTimePitch()

override func viewDidLoad() {
    super.viewDidLoad()

    audioEngine.inputNode.reset()
    if playerNode.engine == nil {
        audioEngine.attach(playerNode)
        audioEngine.attach(timeShift)
    }
    audioEngine.connect(playerNode, to: timeShift, format: nil)
    audioEngine.connect(timeShift, to: audioEngine.mainMixerNode, format: nil)
    audioEngine.prepare()
    do {
        try audioEngine.start()
    } catch {
        print("Could not start audio engine")
    }

    do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay, .defaultToSpeaker])
        try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
        try AVAudioSession.sharedInstance().setActive(true)
    } catch {
        print(error)
    }

    let urlMain = Bundle.main.url(forResource: "Demo", withExtension: "mp3")!
    let audioAsset = AVURLAsset(url: urlMain, options: nil)
    let audioDuration = audioAsset.duration
    let audioDurationSeconds = CMTimeGetSeconds(audioDuration)
    print(audioDurationSeconds)
    do {
        let audioFile = try AVAudioFile(forReading: urlMain)
        playerNode.scheduleFile(audioFile, at: nil, completionHandler: nil)
        playerNode.play()
    }catch{
        print("No value")
        return
    }
}

@IBAction func pushToSecondVC(_ sender: UIButton) {
    self.dismiss(animated: true, completion: nil)
  }
}