multiple input streams pyaudio

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
quiver
User
Beiträge: 4
Registriert: Freitag 26. März 2010, 13:58

Hallo Zusammen,
ich habe ein Problem mit pyaudio! Ich würde gerne zwei Input-Streams aufmachen (einer als Feed für Anzeigen (z.B. Pegel) und ein weiterer für eine Aufnahmen). Mein GUI-Programm tut auch alles was ich möchte... auf OSX und Ubuntu! Leider ist das Zielbetriebssystem openSuSe wo dieses nicht geht! Hat jemand eine Idee wie ich das Problem beheben könnte???

Hier etwas Code um das Problem darzustellen:

Code: Alles auswählen

#!/usr/bin/env python

import pyaudio
import wave
import threading
import struct



class AudioBufferHandler(threading.Thread):
    ###################
    #
    def __init__(self):
        
        threading.Thread.__init__(self) 
        self.chunk = 512
        self.FORMAT = pyaudio.paInt16
        self.CHANNELS = 1
        self.RATE = 16000
        self.keepGoing = True

        
        
    ####################
    #
    def run(self):
        self.p = pyaudio.PyAudio()
        self.stream = self.p.open(format = self.FORMAT,
                        channels = self.CHANNELS,
                        rate = self.RATE,
                        input = True,
                        frames_per_buffer = self.chunk)
        
        self.dataBuffer = []

        maxLen = self.RATE / self.chunk * 5
        
        while self.keepGoing:
            if len(self.dataBuffer)< maxLen:
                data = self.stream.read(self.chunk)
                self.dataBuffer.append(data)

                
            else:
                data = self.stream.read(self.chunk)
                self.dataBuffer.append(data) 
                self.dataBuffer.pop(0)
                
      
        self.stream.close()
        self.p.terminate()
            
            
    ####################
    #
    def stop(self):
        self.keepGoing = False
        
        
        
    ####################    
    #
    def getLatest(self):
        return struct.unpack("%dh"%(self.chunk), self.dataBuffer[-1])


def main():

    AudioBuffer = AudioBufferHandler()
    AudioBuffer.start()


    chunk = 512
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 16000
    RECORD_SECONDS = 5

    p = pyaudio.PyAudio()
    
    stream = p.open(format = FORMAT,
                    channels = CHANNELS,
                    rate = RATE,
                    input = True,
                    frames_per_buffer = chunk)

    print "* recording"
    all = []
    for i in range(0, RATE / chunk * RECORD_SECONDS):
        data = stream.read(chunk)
        all.append(data)
    print "* done recording"

    stream.close()
    p.terminate()

    AudioBuffer.stop()


##########################
##########################
##########################

if __name__ == '__main__':
    main()
Den PulseAudio Daemon (==default in Ubuntu) unter SuSe zu benutzten hab ich schon probiert.... leider ohne Erfolg! Hat jemand eine Idee??? Falls jemand ein besseres Forum für meine Frage kennt wäre ich ihm/ihr auch sehr Dankbar...

vielen Dank schon mal!
Antworten