Exemplo n.º 1
0
    def record(self, mp=None):
        self.dispatcher.emit("recorder-starting")

        self.logger.info("Recording (current status: {})".format(self.status))

        if self.status == ERROR_STATUS:
            try:
                self.__prepare()
                self.recorder.preview_and_record()
            except Exception as exc:
                self.dispatcher.emit("recorder-error", str(exc))
                return False

        else:
            if self.status == INIT_STATUS:
                self.logger.warning(
                    "Cancel recording: status error (in {})".format(
                        self.status))
                return False
            if self.status != PREVIEW_STATUS and not self.overlap:
                self.logger.info(
                    "Cancel recording: it is already recording and not allow overlap"
                )
                return False

            if self.status == PAUSED_STATUS:
                self.resume()

            if self.status == RECORDING_STATUS:
                self.recorder.stop()
                self.__close_mp()
                try:
                    self.__prepare()
                    self.recorder.preview_and_record()
                except Exception as exc:
                    self.dispatcher.emit("recorder-error", str(exc))
                    return False
            else:
                self.recorder and self.recorder.record()

        if not self.current_mediapackage:
            self.current_mediapackage = mp or self.create_mp()

        self.logger.info("Recording to MP {}".format(
            self.current_mediapackage.getIdentifier()))
        self.current_mediapackage.status = mediapackage.RECORDING
        now = round_microseconds(datetime.utcnow())
        self.current_mediapackage.setDate(now)
        self.current_mediapackage.setProperty('origin',
                                              self.conf.get_hostname())
        self.current_mediapackage.setSpatial(self.conf.get_hostname())
        self.__set_status(RECORDING_STATUS)
        self.dispatcher.emit("recorder-started",
                             self.current_mediapackage.getIdentifier())

        # Save current tmp data
        self.repo.save_current_mp_data(self.current_mediapackage,
                                       self.recorder.get_bins_info())

        return True
Exemplo n.º 2
0
    def record(self, mp=None):
        self.dispatcher.emit("recorder-starting")

        self.logger.info("Recording (current status: {})".format(self.status))

        if self.status == ERROR_STATUS:
            try:
                self.__prepare()
                self.recorder.preview_and_record()
            except Exception as exc:
                self.dispatcher.emit("recorder-error", str(exc))
                return False

        else:
            if self.status == INIT_STATUS:
                self.logger.warning("Cancel recording: status error (in {})".format(self.status))
                return False
            if self.status != PREVIEW_STATUS and not self.overlap:
                self.logger.info("Cancel recording: it is already recording and not allow overlap")
                return False

            if self.status == PAUSED_STATUS:
                self.resume()

            if self.status == RECORDING_STATUS:
                self.stop()
                self.record(mp)
                return True
            else:
                self.recorder and self.recorder.record()

        if not self.current_mediapackage:
            self.current_mediapackage = mp or self.create_mp()

        self.logger.info("Recording to MP {}".format(self.current_mediapackage.getIdentifier()))
        self.current_mediapackage.status = mediapackage.RECORDING
        now = round_microseconds(datetime.utcnow())
        self.current_mediapackage.setDate(now)
        self.current_mediapackage.setProperty('origin', self.conf.get_hostname())
        self.current_mediapackage.setSpatial(self.conf.get_hostname())
        self.__set_status(RECORDING_STATUS)
        self.dispatcher.emit("recorder-started", self.current_mediapackage.getIdentifier())

        # Save current tmp data
        self.repo.save_current_mp_data(self.current_mediapackage, self.recorder.get_bins_info())

        return True