예제 #1
0
    def save_settings(self, widget=None, userdata=None):
        """Saves settings changed in this window to the stream_settings module, followed by a commit to the config file."""
        config = stream_settings.get_config()
        config['remember_me'] = self.remember_me.get_active()
        if self.remember_me.get_active():
            config['username'] = self.username_entry.get_text()
            config['stream_key'] = self.stream_key_entry.get_text()
        config['frame_rate'] = self.fps_adjustment.get_value()
        config['output_width'] = self.output_width.get_text()
        config['output_height'] = self.output_height.get_text()
        config['capture_x'] = self.capture_x.get_text()
        config['capture_y'] = self.capture_y.get_text()
        config['capture_width'] = self.capture_width.get_text()
        config['capture_height'] = self.capture_height.get_text()
        config['audio_file'] = self.audio_custom_file.get_filename()
        config['audio_youtube_url'] = self.audio_youtube_url.get_text()
        config['audio_source_id'] = self.audio_source_box.get_active_id()

        config['overlays'] = []
        # Save overlay items
        for overlay_row in self.overlay_store:
            overlay = {'file': overlay_row[0],
                       'x': overlay_row[1],
                       'y': overlay_row[2],
                       'gravity': overlay_row[3]}
            config['overlays'].append(overlay)

        stream_settings.save()
예제 #2
0
    def get_command(self):
        config = stream_settings.get_config()
        substituted = FFMpegManager.command % { 
                                  'INPUT_WIDTH': int(config['capture_width']),
                                  'INPUT_HEIGHT': int(config['capture_height']),
                                  'FPS': int(config['frame_rate']),
                                  'DISPLAY': getenv('DISPLAY'),
                                  'INPUT_X': int(config['capture_x']),
                                  'INPUT_Y': int(config['capture_y']),
                                  'OUTPUT_WIDTH': int(config['output_width']),
                                  'OUTPUT_HEIGHT': int(config['output_height']),
                                  'STREAM_KEY': config['stream_key'] }
        if config['audio_source_id'] == 'microphone':
            substituted += FFMpegManager.audio_pulse # TODO add support for ALSA, input source selection
        elif config['audio_source_id'] == 'file':
            substituted += FFMpegManager.audio_custom_file % {'AUDIO_FILE': config['audio_file'] }

        if len(config['overlays']) > 0:
            for overlay in config['overlays']:
                substituted += FFMpegManager.input_file % { 'INPUT_FILE': overlay['file'] }

            substituted += " -filter_complex \""
            for i, overlay in enumerate(config['overlays']):
                substituted += FFMpegManager.video_overlay % {'OVERLAY_X': overlay['x'], 'OVERLAY_Y': overlay['y'] }
                if i < len(config['overlays'])-1:
                    substituted += ","
            substituted += "\""

        return substituted
예제 #3
0
    def load_settings(self):
        config = stream_settings.get_config()
        self.username_entry.set_text(config['username'])
        self.stream_key_entry.set_text(config['stream_key'])
        self.remember_me.set_active(config['remember_me'])
        self.fps_adjustment.set_value(config['frame_rate'])
        self.output_width.set_text(str(config['output_width']))
        self.output_height.set_text(str(config['output_height']))
        self.capture_x.set_text(str(config['capture_x']))
        self.capture_y.set_text(str(config['capture_y']))
        self.capture_width.set_text(str(config['capture_width']))
        self.capture_height.set_text(str(config['capture_height']))
        self.audio_source_box.set_active_id(config['audio_source_id'])
        self.audio_youtube_url.set_text(config['audio_youtube_url'])
        self.audio_custom_file.set_filename(config['audio_file'])

        # Add overlay items
        for overlay in config['overlays']:
            self.overlay_store.append([overlay['file'], overlay['x'], overlay['y'], overlay['gravity']])