예제 #1
0
    def generate_spectrogram(self):
        """
        generate spectrogram of all media files loaded in player #1
        """

        if self.cbVisualizeSpectrogram.isChecked():

            if dialog.MessageDialog(
                    programName,
                ("You choose to visualize the spectrogram for the media in player #1.<br>"
                 "Choose YES to generate the spectrogram.\n\n"
                 "Spectrogram generation can take some time for long media, be patient"
                 ), [YES, NO]) == YES:

                if not self.ffmpeg_cache_dir:
                    tmp_dir = tempfile.gettempdir()
                else:
                    tmp_dir = self.ffmpeg_cache_dir

                w = dialog.Info_widget()
                w.resize(350, 100)
                w.setWindowFlags(Qt.WindowStaysOnTopHint)
                w.setWindowTitle("BORIS")
                w.label.setText("Generating spectrogram...")

                #for media in self.pj[OBSERVATIONS][self.observationId][FILE][PLAYER1]:
                for row in range(self.twVideo1.rowCount()):

                    media_file_path = project_functions.media_full_path(
                        self.twVideo1.item(row, 0).text(), self.project_path)

                    if os.path.isfile(media_file_path):

                        process = plot_spectrogram.create_spectrogram_multiprocessing(
                            mediaFile=media_file_path,
                            tmp_dir=tmp_dir,
                            chunk_size=self.chunk_length,
                            ffmpeg_bin=self.ffmpeg_bin,
                            spectrogramHeight=self.spectrogramHeight,
                            spectrogram_color_map=self.spectrogram_color_map)
                        if process:
                            w.show()
                            while True:
                                QApplication.processEvents()
                                if not process.is_alive():
                                    w.hide()
                                    break
                    else:
                        QMessageBox.warning(
                            self, programName,
                            "<b>{}</b> file not found".format(media_file_path))
            else:
                self.cbVisualizeSpectrogram.setChecked(False)
예제 #2
0
    def generate_spectrogram(self):
        """
        generate spectrogram of all media files loaded in player #1
        """

        if self.cbVisualizeSpectrogram.isChecked():

            if dialog.MessageDialog(programName, ("Você escolhe visualizar o espectrograma para a mídia no player #1.<br>"
                                                  "Escolha SIM para gerar o espectrograma.\n\n"
                                                  "Geração de espectrograma pode levar algum tempo para mídia longa, seja paciente"), [YES, NO]) == YES:

                if not self.ffmpeg_cache_dir:
                    tmp_dir = tempfile.gettempdir()
                else:
                    tmp_dir = self.ffmpeg_cache_dir

                w = dialog.Info_widget()
                w.resize(350, 100)
                w.setWindowFlags(Qt.WindowStaysOnTopHint)
                w.setWindowTitle("eMOC")
                w.label.setText("Gerando espectrograma...")

                #for media in self.pj[OBSERVATIONS][self.observationId][FILE][PLAYER1]:
                for row in range(self.twVideo1.rowCount()):
                    
                    media_file_path = project_functions.media_full_path(self.twVideo1.item(row, 0).text(), self.project_path)
                    
                    if os.path.isfile(media_file_path):
                        
                        process = plot_spectrogram.create_spectrogram_multiprocessing(mediaFile=media_file_path,
                                                                                      tmp_dir=tmp_dir,
                                                                                      chunk_size=self.chunk_length,
                                                                                      ffmpeg_bin=self.ffmpeg_bin,
                                                                                      spectrogramHeight=self.spectrogramHeight,
                                                                                      spectrogram_color_map=self.spectrogram_color_map)
                        if process:
                            w.show()
                            while True:
                                QApplication.processEvents()
                                if not process.is_alive():
                                    w.hide()
                                    break
                    else:
                        QMessageBox.warning(self, programName , "<b>{}</b> Arquivo não encontrado".format(media_file_path))
            else:
                self.cbVisualizeSpectrogram.setChecked(False)
예제 #3
0
    def extract_wav(self):
        """
        extract wav of all media files loaded in player #1
        """

        if self.cbVisualizeSpectrogram.isChecked() or self.cb_visualize_waveform.isChecked():
            flag_wav_produced = False
            # check if player 1 is selected
            flag_player1 = False
            for row in range(self.twVideo1.rowCount()):
                if self.twVideo1.cellWidget(row, 0).currentText() == "1":
                    flag_player1 = True

            if not flag_player1:
                QMessageBox.critical(self, programName , "The player #1 is not selected")
                self.cbVisualizeSpectrogram.setChecked(False)
                self.cb_visualize_waveform.setChecked(False)
                return

            if dialog.MessageDialog(programName, ("You choose to visualize the spectrogram or waveform for the media in player #1.<br>"
                                                  "The WAV will be extracted from the media files, be patient"), [YES, NO]) == YES:

                w = dialog.Info_widget()
                w.resize(350, 100)
                w.setWindowFlags(Qt.WindowStaysOnTopHint)
                w.setWindowTitle("BORIS")
                w.label.setText("Extracting WAV from media files...")

                for row in range(self.twVideo1.rowCount()):
                    # check if player 1
                    if self.twVideo1.cellWidget(row, 0).currentText() != "1":
                        continue

                    media_file_path = project_functions.media_full_path(self.twVideo1.item(row, MEDIA_FILE_PATH_IDX).text(),
                                                                        self.project_path)
                    if self.twVideo1.item(row, HAS_AUDIO_IDX).text() == "False":
                        QMessageBox.critical(self, programName , f"The media file {media_file_path} do not seem to have audio")
                        flag_wav_produced = False
                        break

                    if os.path.isfile(media_file_path):
                        w.show()
                        QApplication.processEvents()

                        if utilities.extract_wav(self.ffmpeg_bin, media_file_path, self.tmp_dir) == "":
                            QMessageBox.critical(self, programName ,
                                                 f"Error during extracting WAV of the media file {media_file_path}")
                            flag_wav_produced = False
                            break

                        w.hide()

                        flag_wav_produced = True
                    else:
                        QMessageBox.warning(self, programName , f"<b>{media_file_path}</b> file not found")

                if not flag_wav_produced:
                    self.cbVisualizeSpectrogram.setChecked(False)
                    self.cb_visualize_waveform.setChecked(False)
            else:
                self.cbVisualizeSpectrogram.setChecked(False)
                self.cb_visualize_waveform.setChecked(False)