def __setRecordParams(self): ##设置音频输入参数 selectedFile = self.ui.editOutputFile.text().strip() if (selectedFile == ""): QMessageBox.critical(self, "错误", "请先设置录音输出文件") return False if os.path.exists(selectedFile): os.remove(selectedFile) # 删除已有文件 ## QMessageBox.critical(self,"错误","录音输出文件被占用,无法删除") ## return False recordFile = QUrl.fromLocalFile(selectedFile) self.recorder.setOutputLocation(recordFile) # 设置输出文件 recordDevice = self.ui.comboDevices.currentText() self.recorder.setAudioInput(recordDevice) # 设置录入设备 settings = QAudioEncoderSettings() # 音频编码设置 settings.setCodec(self.ui.comboCodec.currentText()) # 编码 sampRate = int(self.ui.comboSampleRate.currentText()) settings.setSampleRate(sampRate) # 采样率 channelCount = int(self.ui.comboChannels.currentText()) settings.setChannelCount(channelCount) # 通道数 settings.setEncodingMode(QMultimedia.ConstantBitRateEncoding) # 固定比特率 self.recorder.setAudioSettings(settings) # 音频设置 return True
class QVoiceRecorder(object): def __init__(self): pass def initAudioInput(self, filepath): self.recorder = QAudioRecorder() self.settings = QAudioEncoderSettings() self.settings.setCodec("audio/vorbis") self.recorder.setContainerFormat("ogg") #self.settings.setQuality(QtMultimedia.HighQuality) self.recorder.setEncodingSettings(self.settings) url = QtCore.QUrl.fromLocalFile( QtCore.QFileInfo(filepath).absoluteFilePath()) self.recorder.setOutputLocation(url) def start(self): self.recorder.record() def stop(self): self.recorder.pause() self.recorder.stop() self.recorder.stop()
class SimpleAudioRecorder(QAudioRecorder): def __init__(self, data: ConverterData, transcription: Transcription, app_settings: AppSettings) -> None: super().__init__() self.app_settings = app_settings self.temp = data.get_temp_file() self.transcription = transcription self.file_path = os.path.join(self.temp, f'{self.transcription.id}.wav') self.settings = QAudioEncoderSettings() def start_recording(self) -> None: LOG_RECORDER.info("Audio recording started.") self.settings.setCodec('audio/pcm') self.settings.setChannelCount(1) self.settings.setBitRate(96000) self.settings.setSampleRate(44100) self.settings.setQuality(self.app_settings.audio_quality) self.settings.setEncodingMode(QMultimedia.ConstantQualityEncoding) container = 'audio/x-wav' self.setEncodingSettings(self.settings, QVideoEncoderSettings(), container) self.setOutputLocation(QUrl.fromLocalFile(self.file_path)) self.record() def stop_recording(self) -> Union[str, None]: LOG_RECORDER.info("Audio recording finished.") LOG_RECORDER.info(f"Audio file: {self.file_path}") self.stop() return self.file_path
def startVid(self): self.cam.load() # self.camvfind.show() self.cam.setViewfinder(self.camvfind) self.cam.setCaptureMode(QCamera.CaptureVideo) self.cam.start() audio = QAudioEncoderSettings() audio.setCodec("audio/amr") audio.setQuality(QtMultimedia.QMultimedia.NormalQuality) video = QVideoEncoderSettings() # video.setCodec("video/mp4") video.setQuality(QtMultimedia.QMultimedia.NormalQuality) video.setResolution(1920, 1080) video.setFrameRate(30.0) # self.recorder.setAudioSettings(audio) self.recorder.setVideoSettings(video) self.recorder.setContainerFormat("mp4")
def __setRecordParams(self): ##设置音频输入参数 selectedFile = self.ui.editOutputFile.text().strip() if (selectedFile == ""): QMessageBox.critical(self, "错误", "请先设置录音输出文件") return False if os.path.exists(selectedFile): os.remove(selectedFile) #删除已有文件 ## QMessageBox.critical(self,"错误","录音输出文件被占用,无法删除") ## return False recordFile = QUrl.fromLocalFile(selectedFile) self.recorder.setOutputLocation(recordFile) #设置输出文件 recordDevice = self.ui.comboDevices.currentText() self.recorder.setAudioInput(recordDevice) #设置录入设备 settings = QAudioEncoderSettings() #音频编码设置 settings.setCodec(self.ui.comboCodec.currentText()) #编码 sampRate = int(self.ui.comboSampleRate.currentText()) settings.setSampleRate(sampRate) #采样率 bitRate = int(self.ui.comboBitrate.currentText()) settings.setBitRate(bitRate) #比特率 channelCount = int(self.ui.comboChannels.currentText()) settings.setChannelCount(channelCount) #通道数 ## quality=self.ui.sliderQuality.value() #也可以 quality = QMultimedia.EncodingQuality(self.ui.sliderQuality.value()) settings.setQuality(quality) #品质 if self.ui.radioQuality.isChecked(): #编码模式为固定品质,自动决定采样率,采样点大小 settings.setEncodingMode(QMultimedia.ConstantQualityEncoding) else: settings.setEncodingMode( QMultimedia.ConstantBitRateEncoding) #固定比特率 self.recorder.setAudioSettings(settings) #音频设置 return True
def record(self, filename): url = QtCore.QUrl.fromLocalFile( QtCore.QFileInfo(filename).absoluteFilePath()) #content = QMediaObject(url) #self.recorder = QAudioRecorder() #source = QAudioInput() #source = QMediaObject() self.recorder = QAudioRecorder() settings = QAudioEncoderSettings() settings.setChannelCount(1) settings.setSampleRate(44100) settings.setBitRate(32) settings.setCodec("audio/vorbis") #settings.setEncodingMode(QtMultimedia.ConstantQualityEnconding) self.recorder.setContainerFormat("ogg") self.recorder.setEncodingSettings(settings) self.recorder.setOutputLocation(url)
def initAudioListWidget(self, dbAdapter, deckpath, current_rowid): self.audioItemsDict = [] self.dbAdapter = dbAdapter self.deckpath = deckpath self.current_rowid = current_rowid self.audioPlayer = QMediaPlayer() self.audioPlayer.mediaStatusChanged.connect(self.mediaStatusChanged) os_name = platform.uname()[0] if os_name == "Windows" or os_name == "Darwin": self.audioRecorder = QAudioRecorder() else: from modules.deck.gstAudioRecorder import GstAudioRecorder self.audioRecorder = GstAudioRecorder() settings = QAudioEncoderSettings() audioformat = self.config.readVar('vocable', 'audioformat') if audioformat == 'ogg': settings.setCodec("audio/vorbis") self.audioRecorder.setContainerFormat("ogg") elif audioformat == 'mp3': settings.setCodec("audio/mpeg") self.audioRecorder.setContainerFormat("mp3") elif audioformat == 'amr': settings.setCodec("audio/amr") else: settings.setCodec("audio/PCM") self.audioRecorder.setContainerFormat("wav") self.audioRecorder.setEncodingSettings(settings) self.setColumnCount(6) self.setHorizontalHeaderLabels( ["description", "", "", "", "", "filename"]) self.setRowCount(0) self.itemChanged.connect(self.onItemChanged)
def setupWindow(self): """Set up widgets in the main window and the QAudioRecorder instance.""" # Set up two push buttons (the app's first "screen") self.select_path_button = QPushButton("Select Audio Path") self.select_path_button.setObjectName("SelectFile") self.select_path_button.setFixedWidth(140) self.select_path_button.clicked.connect(self.selectAudioPath) self.start_button = QPushButton() self.start_button.setObjectName("StartButton") self.start_button.setEnabled(False) self.start_button.setFixedSize(105, 105) self.start_button.clicked.connect(self.startRecording) # Set up the labels and stop button (the app's second "screen") self.recording_label = QLabel("Recording...") self.recording_label.setFont(QFont("Helvetica [Cronyx]", 32)) self.recording_label.setVisible(False) self.recording_label.setAlignment(Qt.AlignHCenter) self.time_label = QLabel("00:00") self.time_label.setFont(QFont("Helvetica [Cronyx]", 18)) self.time_label.setObjectName("Time") self.time_label.setVisible(False) self.time_label.setAlignment(Qt.AlignHCenter) self.stop_button = QPushButton() self.stop_button.setObjectName("StopButton") self.stop_button.setFixedSize(65, 65) self.stop_button.setVisible(False) self.stop_button.clicked.connect(self.stopRecording) # Set up the main layout self.main_v_box = QVBoxLayout() self.main_v_box.setAlignment(Qt.AlignHCenter) self.main_v_box.addWidget(self.select_path_button) # Force select_path_button to be centered in the window self.main_v_box.setAlignment(self.select_path_button, Qt.AlignCenter) self.main_v_box.addStretch(3) self.main_v_box.addWidget(self.start_button) self.main_v_box.setAlignment(self.start_button, Qt.AlignCenter) self.main_v_box.addWidget(self.recording_label) self.main_v_box.addWidget(self.time_label) self.main_v_box.addStretch(3) self.main_v_box.addWidget(self.stop_button) self.main_v_box.setAlignment(self.stop_button, Qt.AlignCenter) self.main_v_box.addStretch(1) self.setLayout(self.main_v_box) # Set the beginning layout # Specify audio encoder settings audio_settings = QAudioEncoderSettings() # Depending upon your platform or the codecs that you have available, you # will need to change the codec. For Linux users if you are having issues # use "audio/x-vorbis", and then select the .ogg extension when saving # the file audio_settings.setCodec("audio/wav") audio_settings.setQuality(QMultimedia.HighQuality) # Create instance of QAudioRecorder for recording audio self.audio_recorder = QAudioRecorder() # Uncomment to discover possible codecs supported on your platform #print(self.audio_recorder.supportedAudioCodecs()) self.audio_recorder.setEncodingSettings(audio_settings) self.audio_recorder.durationChanged.connect(self.displayTime)