예제 #1
0
    def _setup_recorder(self):
        s = QtMultimedia.QAudioEncoderSettings()

        s.setCodec('')
        s.setSampleRate(48000)
        s.setBitRate(128000)
        s.setChannelCount(2)
        s.setQuality(QtMultimedia.QMultimedia.HighQuality)
        s.setEncodingMode(QtMultimedia.QMultimedia.ConstantQualityEncoding)

        self._recorder.setEncodingSettings(
            s, QtMultimedia.QVideoEncoderSettings(), '')
예제 #2
0
 def __init__(self, parent=None):
     QtWidgets.QWidget.__init__(self,
                                parent,
                                flags=QtCore.Qt.Window
                                | QtCore.Qt.MSWindowsFixedSizeDialogHint)
     self.setWindowTitle("Запись звука")
     # Инициализируем подсистему для записи звука
     self.ardRecorder = QtMultimedia.QAudioRecorder()
     # Устанавливаем максимальную громкость
     self.ardRecorder.setVolume(100)
     # Звук будет сохраняться в файле record.wav, находящемся в
     # той же папке, где хранится программа
     fn = QtCore.QUrl.fromLocalFile(os.path.abspath("record.wav"))
     self.ardRecorder.setOutputLocation(fn)
     # Устанавливаем звуковой вход по умолчанию
     self.ardRecorder.setAudioInput(self.ardRecorder.defaultAudioInput())
     # Указываем формат файла WAV
     self.ardRecorder.setContainerFormat("audio/x-wav")
     # Задаем параметры кодирования звука
     aes = QtMultimedia.QAudioEncoderSettings()
     aes.setCodec("audio/pcm")
     aes.setSampleRate(8000)
     aes.setChannelCount(1)
     aes.setEncodingMode(QtMultimedia.QMultimedia.ConstantQualityEncoding)
     aes.setQuality(QtMultimedia.QMultimedia.VeryLowQuality)
     self.ardRecorder.setAudioSettings(aes)
     self.ardRecorder.statusChanged.connect(self.initRecorder)
     self.ardRecorder.durationChanged.connect(self.showDuration)
     # Создаем компоненты для запуска, приостановки и остановки
     # записи звука и регулирования его уровня
     vbox = QtWidgets.QVBoxLayout()
     hbox = QtWidgets.QHBoxLayout()
     self.btnRecord = QtWidgets.QPushButton("&Запись")
     self.btnRecord.clicked.connect(self.ardRecorder.record)
     hbox.addWidget(self.btnRecord)
     self.btnPause = QtWidgets.QPushButton("П&ауза")
     self.btnPause.clicked.connect(self.ardRecorder.pause)
     self.btnPause.setEnabled(False)
     hbox.addWidget(self.btnPause)
     self.btnStop = QtWidgets.QPushButton("&Стоп")
     self.btnStop.clicked.connect(self.ardRecorder.stop)
     self.btnStop.setEnabled(False)
     hbox.addWidget(self.btnStop)
     vbox.addLayout(hbox)
     hbox = QtWidgets.QHBoxLayout()
     lblVolume = QtWidgets.QLabel("&Уровень записи")
     hbox.addWidget(lblVolume)
     sldVolume = QtWidgets.QSlider(QtCore.Qt.Horizontal)
     sldVolume.setRange(0, 100)
     sldVolume.setTickPosition(QtWidgets.QSlider.TicksAbove)
     sldVolume.setTickInterval(10)
     sldVolume.setValue(100)
     lblVolume.setBuddy(sldVolume)
     sldVolume.valueChanged.connect(self.ardRecorder.setVolume)
     hbox.addWidget(sldVolume)
     vbox.addLayout(hbox)
     # Создаем надпись, в которую будет выводиться состояние
     # программы
     self.lblStatus = QtWidgets.QLabel("Готово")
     vbox.addWidget(self.lblStatus)
     self.setLayout(vbox)
     self.resize(300, 100)