【发布时间】:2020-10-10 23:46:06
【问题描述】:
pyqt5有没有办法记录麦克风输入?
我试试这个代码:
from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia
import time
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.destinationFile = QtCore.QFile()
self.destinationFile.setFileName("record.raw")
self.destinationFile.open( QtCore.QIODevice.WriteOnly | QtCore.QIODevice.Truncate )
format = QtMultimedia.QAudioFormat()
format.setSampleRate(8000);
format.setChannelCount(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QtMultimedia.QAudioFormat.LittleEndian)
format.setSampleType(QtMultimedia.QAudioFormat.UnSignedInt)
info = QtMultimedia.QAudioDeviceInfo.defaultInputDevice()
if (info.isFormatSupported(format) is not True):
format = info.nearestFormat(format)
self.audio = QtMultimedia.QAudioInput(format)
self.audio.start(self.destinationFile)
self.timer = QtCore.QTimer(MainWindow)
self.timer.timeout.connect(lambda:self.close_window(MainWindow))
self.timer.start(10000)
def close_window(self,MainWindow):
self.audio.stop()
self.destinationFile.close()
MainWindow.close()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.addLibraryPath(r"C:/Users/Χρήστος/AppData/Local/Programs/Python/Python38/lib/site-packages/PyQt5/Qt/plugins")
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
sys.exit(app.exec_())
上面的代码输出一个文件record.raw 80 kB。 我听不见。我使用 Switch Audio Converter 将其转换为 mp3。 持续时间应该是 10 秒,但我只能听到噪音。 有什么帮助吗?
原始输出: https://files.fm/u/cv4y8d7h
Mp3 输出: https://files.fm/u/68c8zvvc#/view/v2rnbapw
print(info.deviceName()) -->默认输入设备
input_devices = QtMultimedia.QAudioDeviceInfo.availableDevices(QtMultimedia.QAudio.AudioInput)
for input_device in input_devices:
print(input_device.deviceName())
Μικρόφωνο(瑞昱高清音频)
Μικρόφωνο(瑞昱高清音频)
(相同麦克风输入的 2 倍)
【问题讨论】:
-
为什么要使用这些设置进行音频采样?此外,您列出了两台设备(这很正常,因为经常会多次列出同一个音频设备),但您只是使用默认设备,您不能也尝试其他设备吗?
-
文档中提供的那些设置:doc.qt.io/qt-5/qaudioinput.html,我尝试使用这两种设备。结果相同。我只是尝试:
self.audio = QtMultimedia.QAudioInput(input_devices[0],format)和self.audio = QtMultimedia.QAudioInput(input_devices[1],format)
标签: python pyqt5 microphone multimedia