def create_presentation(self):
        """ Create the presentation.

        The audio track is mixed with the slides. The resulting file is saved as self.output

        DownloadError is raised if some resources cannot be fetched.
        ConversionError is raised if the final video cannot be created.
        """
        # Avoid wasting time and bandwidth if we known that conversion will fail.
        if not self.overwrite and os.path.exists(self.output):
            raise ConversionError("File %s already exist and --overwrite not specified" % self.output)

        video = self.download_video()
        raw_slides = self.download_slides()

        # ffmpeg does not support SWF
        png_slides = self._convert_slides(raw_slides)
        # Create one frame per second using the time code information
        frame_pattern = self._prepare_frames(png_slides)

        return self._assemble(video, frame_pattern)
Create the presentation.

        The audio track is mixed with the slides. The resulting file is saved as self.output

        DownloadError is raised if some resources cannot be fetched.
        ConversionError is raised if the final video cannot be created.