def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates( ) for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription(format), format)
def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates() for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription( format), format)
class VideoSettings(QDialog): def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates() for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription( format), format) def audioSettings(self): settings = self.mediaRecorder.audioSettings() settings.setCodec(self.boxValue(self.ui.audioCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.audioQualitySlider.value())) settings.setSampleRate(self.boxValue(self.ui.audioSampleRateBox)) return settings def setAudioSettings(self, settings): self.selectComboBoxItem(self.ui.audioCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.audioSampleRateBox, settings.sampleRate()) self.ui.audioQualitySlider.setValue(settings.quality()) def videoSettings(self): settings = self.mediaRecorder.videoSettings() settings.setCodec(self.boxValue(self.ui.videoCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.videoQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.videoResolutionBox)) settings.setFrameRate(self.boxValue(self.ui.videoFramerateBox)) return settings def setVideoSettings(self, settings): self.selectComboBoxItem(self.ui.videoCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.videoResolutionBox, settings.resolution()) self.ui.videoQualitySlider.setValue(settings.quality()) for i in range(1, self.ui.videoFramerateBox.count()): itemRate = self.ui.videoFramerateBox.itemData(i) if qFuzzyCompare(itemRate, settings.frameRate()): self.ui.videoFramerateBox.setCurrentIndex(i) break def format(self): return self.boxValue(self.ui.containerFormatBox) def setFormat(self, format): self.selectComboBoxItem(self.ui.containerFormatBox, format) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break
class VideoSettings(QDialog): def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates( ) for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription(format), format) def audioSettings(self): settings = self.mediaRecorder.audioSettings() settings.setCodec(self.boxValue(self.ui.audioCodecBox)) settings.setQuality( QMultimedia.EncodingQuality(self.ui.audioQualitySlider.value())) settings.setSampleRate(self.boxValue(self.ui.audioSampleRateBox)) return settings def setAudioSettings(self, settings): self.selectComboBoxItem(self.ui.audioCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.audioSampleRateBox, settings.sampleRate()) self.ui.audioQualitySlider.setValue(settings.quality()) def videoSettings(self): settings = self.mediaRecorder.videoSettings() settings.setCodec(self.boxValue(self.ui.videoCodecBox)) settings.setQuality( QMultimedia.EncodingQuality(self.ui.videoQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.videoResolutionBox)) settings.setFrameRate(self.boxValue(self.ui.videoFramerateBox)) return settings def setVideoSettings(self, settings): self.selectComboBoxItem(self.ui.videoCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.videoResolutionBox, settings.resolution()) self.ui.videoQualitySlider.setValue(settings.quality()) for i in range(1, self.ui.videoFramerateBox.count()): itemRate = self.ui.videoFramerateBox.itemData(i) if qFuzzyCompare(itemRate, settings.frameRate()): self.ui.videoFramerateBox.setCurrentIndex(i) break def format(self): return self.boxValue(self.ui.containerFormatBox) def setFormat(self, format): self.selectComboBoxItem(self.ui.containerFormatBox, format) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break