2017-07-12 3 views
0

Ich bin auf Windows 7 und ich möchte auf die Aufnahme-Lautstärke des Standard-Audio-Eingabegerät zugreifen (lesen/schreiben).Wie kann ich in PyQt 5.9 auf das Audioaufnahmevolumen zugreifen?

In PyQt 5.7 der Code unten gearbeitet und audio.volume() gab den tatsächlichen Aufnahmepegel (z. B. 0,8). In PyQt 5.8.2 und 5.9 funktioniert der folgende Ansatz nicht mehr und er gibt immer 0.0 zurück (und ich bin auch nicht in der Lage das Level zu ändern). Ein Unterschied, den ich festgestellt habe, ist, dass 5.8 und 5.9 den Namen des Audio-Eingabegeräts "Default Input Device" haben, während es in 5.7 der tatsächliche (abgeschnittene) Gerätename war (zB "Microphone (Logitech USB Headse") es gibt „Eingabegerät Standard“, wie ich für das Standardgerät gefragt

import PyQt5.QtCore 
from PyQt5 import QtMultimedia 

PyQt5.QtCore.PYQT_VERSION_STR # '5.9' 

audioFormat = QtMultimedia.QAudioFormat() 
audioFormat.setChannelCount(1) 
audioFormat.setSampleRate(16000) 
audioFormat.setSampleSize(16) 
audioFormat.setCodec("audio/pcm") 
audioFormat.setByteOrder(QtMultimedia.QAudioFormat.LittleEndian) 
audioFormat.setSampleType(QtMultimedia.QAudioFormat.SignedInt) 

info = QtMultimedia.QAudioDeviceInfo.defaultInputDevice() 

info.deviceName() # 'Default Input Device' 
audio = QtMultimedia.QAudioInput(info, audioFormat) 
audio.volume() # 0.0 

info.isFormatSupported(audioFormat) # True 

Fragen habe ich:.?

  • Ist das ein Fehler Wenn ja, wo kann ich es berichten
  • wie? sollte ich auf den Audioeingangspegel zugreifen?
+0

Ich habe ein Qt-Forum gefunden, in dem diese Frage besser passt: http://www.qtcentre.org/threads/68488-How-to-access-audio-recording-volume-in-PyQt-5 -9 – e1i45

+0

Fehler gemeldet: https://bugreports.qt.io/browse/QTBUG-61920 – e1i45

Antwort

0

Es sieht so aus, als ob diese Änderung im Verhalten mit dieser commit eingeführt wurde.

Um das alte Verhalten in neuen Qt-Versionen (5.8+) wiederherzustellen: Holen Sie sich die Liste aller Eingabegeräte und nehmen Sie die erste. Dies ist genau das, was die vorherige Implementierung der Standardgerätfunktion getan hat. Unter Windows 7 ist das erste Gerät in der Liste immer das Standardgerät.

Verwandte Themen