コード例 #1
0
    def _side_by_side(self, mp, location=None):
        logger.info('Executing SideBySide for MP {0}'.format(
            mp.getIdentifier()))
        mp.setOpStatus('sidebyside', mediapackage.OP_PROCESSING)
        if not location:
            name = datetime.now().replace(microsecond=0).isoformat()
            location = location or os.path.join(self.export_path,
                                                name + '.mp4')
        self.repo.update(mp)
        self.dispatcher.emit('start-operation', 'sidebyside', mp)

        audio = None  #'camera'
        camera = screen = None
        for track in mp.getTracks():
            if track.getMimeType()[0:5] == 'audio':
                audio = track.getURI()
            else:
                if track.getFlavor()[0:9] == 'presenter':
                    camera = track.getURI()
                if track.getFlavor()[0:12] == 'presentation':
                    screen = track.getURI()
        try:
            sidebyside.create_sbs(location, screen, camera, audio)
            mp.setOpStatus('sidebyside', mediapackage.OP_DONE)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, True)
        except:
            logger.error("Failed SideBySide for MP {0}".format(
                mp.getIdentifier()))
            mp.setOpStatus('sidebyside', mediapackage.OP_FAILED)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, False)
        self.repo.update(mp)
コード例 #2
0
ファイル: worker.py プロジェクト: MasterFox/Galicaster
    def _side_by_side(self, mp, location=None):
        self.logger.info('Executing SideBySide for MP {0}'.format(mp.getIdentifier()))
        mp.setOpStatus('sidebyside',mediapackage.OP_PROCESSING)
        if not location:
            name = datetime.now().replace(microsecond=0).isoformat()
            location = location or os.path.join(self.export_path, name + '.mp4')
        self.repo.update(mp)
        self.dispatcher.emit('start-operation', 'sidebyside', mp)

        audio = None  #'camera'
        camera = screen = None
        for track in mp.getTracks():
            if track.getMimeType()[0:5] == 'audio':
                 audio = track.getURI()
            else:
                if track.getFlavor()[0:9] == 'presenter' :
                    camera = track.getURI()
                if track.getFlavor()[0:12] == 'presentation':
                    screen = track.getURI()
        try:
            sidebyside.create_sbs(location, camera, screen, audio, self.sbs_layout)
            mp.setOpStatus('sidebyside',mediapackage.OP_DONE)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, True)
        except:
            self.logger.error("Failed SideBySide for MP {0}".format(mp.getIdentifier()))
            mp.setOpStatus('sidebyside', mediapackage.OP_FAILED)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, False)
        self.repo.update(mp)
コード例 #3
0
    def _side_by_side(self, mp, location=None):
        location = location or self.gen_location('mp4')
        self.logger.info('Executing SideBySide for MP {0}'.format(
            mp.getIdentifier()))
        mp.setOpStatus('sidebyside', mediapackage.OP_PROCESSING)
        self.repo.update(mp)
        self.dispatcher.emit('start-operation', 'sidebyside', mp)

        audio = None  #'camera'
        camera = screen = None
        for track in mp.getTracks():
            if track.getMimeType()[0:5] == 'audio':
                audio = track.getURI()
            else:
                if track.getFlavor()[0:9] == 'presenter':
                    camera = track.getURI()
                if track.getFlavor()[0:12] == 'presentation':
                    screen = track.getURI()
        try:
            sidebyside.create_sbs(location, camera, screen, audio,
                                  self.sbs_layout, self.logger)
            mp.setOpStatus('sidebyside', mediapackage.OP_DONE)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, True)
        except:
            self.logger.error("Failed SideBySide for MP {0}".format(
                mp.getIdentifier()))
            mp.setOpStatus('sidebyside', mediapackage.OP_FAILED)
            self.dispatcher.emit('stop-operation', 'sidebyside', mp, False)
        self.repo.update(mp)
コード例 #4
0
ファイル: worker.py プロジェクト: FihlaTV/Galicaster
    def _side_by_side(self, mp, params={}):
        """Tries to immediately do the side by side operation to a mediapackage.
        If the side by side operation cannot be done, logger prints it properly.
        Args:
            mp (Mediapackage): the mediapackage.
            location (str): the location for the new video file.
        """
        location = self.gen_location('mp4') if not "location" in params else params["location"]
        audio_mode    = "auto" if not "audio" in params else params["audio"]
        sbs_layout    = self.sbs_layout if not "layout" in params else params["layout"]

        if audio_mode not in ["embedded", "external", "auto"]:
            self.logger.warning("SideBySide for MP {}: unknown value {} for parameter 'audio', default to auto-mode".format(mp.getIdentifier(), audio_mode))
            audio_mode = "auto"

        audio = None  #'camera'
        camera = screen = None

        for track in mp.getTracksVideoMaster():
            if track.getFlavor()[0:9] == 'presenter':
                camera = track.getURI()
            if track.getFlavor()[0:12] == 'presentation':
                screen = track.getURI()

        if mp.getTracksAudio():
            audio = mp.getTracksAudio()[0].getURI()

        if not camera or not screen:
            raise IOError('Error in SideBySide process: Two videos needed (with presenter and presentation flavors)')

        if audio_mode == "auto":
            self.logger.info('SideBySide for MP {0}: auto audio-mode'.format(mp.getIdentifier()))
            # Look for embedded audio track, if this not exists use external audio
            info = get_info(camera)
            if 'audio-codec' in info.get_stream_info().get_streams()[0].get_tags().to_string():
                self.logger.info('SideBySide for MP {0}: embedded audio detected'.format(mp.getIdentifier()))
                audio = None
            else:
                self.logger.info('SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...'.format(mp.getIdentifier()))

        elif audio_mode == "embedded":
            self.logger.info('SideBySide for MP {0}: embedded audio-mode'.format(mp.getIdentifier()))
            # Look for embedded audio track, if this not exists use external audio
            info = get_info(camera)
            if 'audio-codec' in info.get_stream_info().get_streams()[0].get_tags().to_string():
                self.logger.info('SideBySide for MP {0}: embedded audio detected'.format(mp.getIdentifier()))
                audio = None
            else:
                self.logger.info('SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...'.format(mp.getIdentifier()))

        else:
            self.logger.info('SideBySide for MP {0}: external audio-mode'.format(mp.getIdentifier()))
            if not audio:
                self.logger.info('SideBySide for MP {0}: external audio NOT detected, trying to use embedded audio...'.format(mp.getIdentifier()))

        sidebyside.create_sbs(location, camera, screen, audio, sbs_layout, self.logger)
コード例 #5
0
    def _side_by_side(self, mp, params={}):
        """Tries to immediately do the side by side operation to a mediapackage.
        If the side by side operation cannot be done, logger prints it properly.
        Args:
            mp (Mediapackage): the mediapackage.
            location (str): the location for the new video file.
        """
        location = self.gen_location('mp4') if not "location" in params else params["location"]
        audio_mode    = "auto" if not "audio" in params else params["audio"]
        sbs_layout    = self.sbs_layout if not "layout" in params else params["layout"]

        if audio_mode not in ["embedded", "external", "auto"]:
            self.logger.warning("SideBySide for MP {}: unknown value {} for parameter 'audio', default to auto-mode".format(mp.getIdentifier(), audio_mode))
            audio_mode = "auto"

        audio = None  #'camera'
        camera = screen = None

        for track in mp.getTracksVideoMaster():
            if track.getFlavor()[0:9] == 'presenter':
                camera = track.getURI()
            if track.getFlavor()[0:12] == 'presentation':
                screen = track.getURI()

        if mp.getTracksAudio():
            audio = mp.getTracksAudio()[0].getURI()

        if not camera or not screen:
            raise IOError, 'Error in SideBySide process: Two videos needed (with presenter and presentation flavors)'

        if audio_mode == "auto":
            self.logger.info('SideBySide for MP {0}: auto audio-mode'.format(mp.getIdentifier()))
            # Look for embedded audio track, if this not exists use external audio
            info = get_info(camera)
            if 'audio-codec' in info.get_stream_info().get_streams()[0].get_tags().to_string():
                self.logger.info('SideBySide for MP {0}: embedded audio detected'.format(mp.getIdentifier()))
                audio = None
            else:
                self.logger.info('SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...'.format(mp.getIdentifier()))

        elif audio_mode == "embedded":
            self.logger.info('SideBySide for MP {0}: embedded audio-mode'.format(mp.getIdentifier()))
            # Look for embedded audio track, if this not exists use external audio
            info = get_info(camera)
            if 'audio-codec' in info.get_stream_info().get_streams()[0].get_tags().to_string():
                self.logger.info('SideBySide for MP {0}: embedded audio detected'.format(mp.getIdentifier()))
                audio = None
            else:
                self.logger.info('SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...'.format(mp.getIdentifier()))

        else:
            self.logger.info('SideBySide for MP {0}: external audio-mode'.format(mp.getIdentifier()))
            if not audio:
                self.logger.info('SideBySide for MP {0}: external audio NOT detected, trying to use embedded audio...'.format(mp.getIdentifier()))

        sidebyside.create_sbs(location, camera, screen, audio, sbs_layout, self.logger)
コード例 #6
0
def create_sbs_video(sbs_location, sbs_layout, mp):
    audio = None  # 'camera'
    camera = screen = None
    for track in mp.getTracks():
        if track.getMimeType()[0:5] == 'audio':
            audio = track.getURI()
        else:
            if track.getFlavor()[0:9] == 'presenter':
                camera = track.getURI()
            if track.getFlavor()[0:12] == 'presentation':
                screen = track.getURI()

    create_sbs(sbs_location, camera, screen, audio, sbs_layout)
コード例 #7
0
 def test_sbs_with_audio(self):   
     out = tempfile.NamedTemporaryFile()
     screen = path.join(self.base_dir, 'SCREEN.mp4')
     camera = path.join(self.base_dir, 'CAMERA.mp4')
     audio = path.join(self.base_dir, 'AUDIO.mp3')
     out = sidebyside.create_sbs(out.name, camera, screen, audio)
     self.assertTrue(out)
コード例 #8
0
 def test_sbs_with_audio(self):
     out = tempfile.NamedTemporaryFile()
     screen = path.join(self.base_dir, 'SCREEN.mp4')
     camera = path.join(self.base_dir, 'CAMERA.mp4')
     audio = path.join(self.base_dir, 'AUDIO.mp3')
     out = sidebyside.create_sbs(out.name, screen, camera, audio)
     self.assertTrue(out)
コード例 #9
0
ファイル: worker.py プロジェクト: rubenrua/Galicaster
    def _side_by_side(self, mp, params={}):
        """Tries to immediately do the side by side operation to a mediapackage.
        If the side by side operation cannot be done, logger prints it properly.
        Args:
            mp (Mediapackage): the mediapackage.
            location (str): the location for the new video file.
        """
        location = self.gen_location("mp4") if not "location" in params else params["location"]
        audio_mode = "auto" if not "audio" in params else params["audio"]
        sbs_layout = self.sbs_layout if not "layout" in params else params["layout"]

        if audio_mode not in ["embedded", "external", "auto"]:
            self.logger.warning(
                "SideBySide for MP {}: unknown value {} for parameter 'audio', default to auto-mode".format(
                    mp.getIdentifier(), audio
                )
            )
            audio_mode = "auto"

        self.logger.info("Executing SideBySide for MP {0}".format(mp.getIdentifier()))
        mp.setOpStatus("sidebyside", mediapackage.OP_PROCESSING)
        self.repo.update(mp)
        self.dispatcher.emit("start-operation", "sidebyside", mp)

        audio = None  #'camera'
        camera = screen = None

        for track in mp.getTracksVideoMaster():
            if track.getFlavor()[0:9] == "presenter":
                camera = track.getURI()
            if track.getFlavor()[0:12] == "presentation":
                screen = track.getURI()

        if mp.getTracksAudio():
            audio = mp.getTracksAudio()[0].getURI()

        try:

            if not camera or not screen:
                raise IOError, "Error in SideBySide proccess: Two videos needed (with presenter and presentation flavors)"

            if audio_mode == "auto":
                self.logger.debug("SideBySide for MP {0}: auto audio-mode".format(mp.getIdentifier()))

                # Look for embedded audio track, if this not exists use external audio
                info = get_info(camera)
                if "audio-codec" in info.get_stream_info().get_streams()[0].get_tags().to_string():
                    self.logger.debug("SideBySide for MP {0}: embedded audio detected".format(mp.getIdentifier()))
                    audio = None
                else:
                    self.logger.debug(
                        "SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...".format(
                            mp.getIdentifier()
                        )
                    )

            elif audio_mode == "embedded":
                self.logger.debug("SideBySide for MP {0}: embedded audio-mode".format(mp.getIdentifier()))

                # Look for embedded audio track, if this not exists use external audio
                info = get_info(camera)
                if "audio-codec" in info.get_stream_info().get_streams()[0].get_tags().to_string():
                    self.logger.debug("SideBySide for MP {0}: embedded audio detected".format(mp.getIdentifier()))
                    audio = None
                else:
                    self.logger.debug(
                        "SideBySide for MP {0}: embedded audio NOT detected, trying to use external audio...".format(
                            mp.getIdentifier()
                        )
                    )

            else:
                self.logger.debug("SideBySide for MP {0}: external audio-mode".format(mp.getIdentifier()))
                if not audio:
                    self.logger.debug(
                        "SideBySide for MP {0}: external audio NOT detected, trying to use embedded audio...".format(
                            mp.getIdentifier()
                        )
                    )

            sidebyside.create_sbs(location, camera, screen, audio, sbs_layout, self.logger)
            self.operation_success(mp, SBS)
        except Exception as exc:
            self.operation_error(mp, SBS, exc)

        self.repo.update(mp)