Я совершенно не знаком с QMultimedia. На данный момент я пытаюсь получить аудиопоток с микрофона в своей веб-камере для дальнейшей обработки. Прямо сейчас я просто пытаюсь постоянно показывать уровень громкости звука, «услышанного» микрофоном с помощью слайдера. Таким образом, я объединил несколько кодов (нашел около 10 тонн примеров, как я могу воспроизводить аудио, но только несколько блоков кода на C++ об аудиовходе) и застрял.Как показать текущий объем звука моего микрофона?
Это мой фактический код:
import sys, time
from PyQt4 import Qt, QtGui, QtCore, QtMultimedia
class VolumeSlider(QtGui.QSlider):
def __init__(self, parent=None):
super(VolumeSlider, self).__init__(parent)
self.audio = None
self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal)
self.volumeSlider.setTickInterval(1)
self.volumeSlider.setMaximum(100)
self.volumeSlider.setValue(49)
self.volumeSlider.show()
self.openMicStream()
# THIS IS WHAT I WANT - DOESN'T WORK
while True:
self.volumeSlider.setValue(self.audio.volume())
time.sleep(0.02)
def openMicStream(self):
#audioInputDevices = QtMultimedia.QAudioDeviceInfo.availableDevices(QtMultimedia.QAudio.AudioInput)
#for d in audioInputDevices: d.deviceName()
info = QtMultimedia.QAudioDeviceInfo(QtMultimedia.QAudioDeviceInfo.defaultInputDevice())
print "Default audio input device:", info.deviceName()
audioFormat = QtMultimedia.QAudioFormat()
audioFormat.setFrequency(8000);
audioFormat.setChannels(1);
audioFormat.setSampleSize(8);
audioFormat.setCodec("audio/pcm");
audioFormat.setByteOrder(QtMultimedia.QAudioFormat.LittleEndian);
audioFormat.setSampleType(QtMultimedia.QAudioFormat.UnSignedInt);
audioDeviceInfo = QtMultimedia.QAudioDeviceInfo.defaultInputDevice();
if not audioDeviceInfo.isFormatSupported(audioFormat):
sys.stderr("default audioFormat not supported try to use nearest")
audioFormat = audioDeviceInfo.nearestFormat(audioFormat);
self.audioInput = QtMultimedia.QAudioInput(audioFormat);
fmtSupported = info.isFormatSupported(audioFormat)
print "Is the selected format supported?", fmtSupported
if not fmtSupported:
audioFormat = info.nearestFormat(audioFormat)
print "Is the nearest format supported?", info.isFormatSupported(audioFormat)
self.audio = QtMultimedia.QAudioInput(audioFormat, None)
self.audio.start()
if __name__ == "__main__":
app = Qt.QApplication(sys.argv)
x = VolumeSlider()
sys.exit(app.exec_())
Может кто-нибудь засунуть мне в голову, что я должен делать в «# Это, что я хочу» место, чтобы вычислить и показать текущий уровень громкости?
Там нет функций для получения или установки громкости на [устройство ввода аудио/вывода] (http://qt-project.org/doc/qt-4.8/qaudioinput.html) в Qt4 (они существуют в Qt5, хотя). – ekhumoro
Вы можете попробовать использовать Phonon вместо http://qt-project.org/doc/qt-4.8/phonon-volumeslider.html – kartikg3
Mmh ... okay, thanx, попробует один из них – kwaxs