2017-07-10 8 views
1

À la WWDC17, de nouvelles fonctions d'enregistrement ont été annoncées pour WatchOS 4. J'ai essayé d'obtenir une matrice PCM, mais je n'ai pas réussi.Enregistrer de l'audio sur WatchOS 4

Actuellement j'ai essayé d'utiliser le code suivant:

Vérifiez AudioSession:

override func awake(withContext context: Any?) { 
    super.awake(withContext: context) 

    let recordingSession = AVAudioSession.sharedInstance() 

    do { 
     try recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     try recordingSession.setActive(true) 
     recordingSession.requestRecordPermission() { [unowned self] allowed in 
      DispatchQueue.main.async { 
       if allowed { 
        self.recordingSessionSuccessfulPermission() 
       } else { 
        self.recordingSessionFailPermission() 
       } 
      } 
     } 
    } catch { 
     self.recordingSessionFailPermission() 
    } 
} 

Début de l'enregistrement:

@IBAction func startRecordButton() { 
    label.setText("start record") 
    let audioEngine = AVAudioEngine.init() 
    let inputNode = audioEngine.inputNode 
    let format = inputNode.inputFormat(forBus: 0) 
    inputNode.installTap(onBus: 0, bufferSize: 8000, format: format) { (buf, wheb) in 
     self.label.setText("It is working") 
    } 

    audioEngine.prepare() 
    do { 
     try audioEngine.start() 
    } catch { 
     // Handle error... 
    } 
} 

Ce code lance l'erreur:

[audiocomp] 178: registration server connection invalidated 
[audiocomp] 170: registration server proxy error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.audio.AudioComponentRegistrar was invalidated." UserInfo={NSDebugDescription=The connection to service named com.apple.audio.AudioComponentRegistrar was invalidated.} 

Répondre

2

L'Au L'objet dioEngine doit être créé en dehors de Action.

Par exemple:

class MyClass: WKInterfaceController { 
    private var audioEngine = AVAudioEngine()