<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def open( self, cmd: List[str], input_source: Optional[str], output: Optional[str] = "-", extra_cmd: Optional[str] = None, stdout_pipe: bool = True, stderr_pipe: bool = False, ) -> bool: """Start a ffmpeg instance and pipe output."""

        stdout = subprocess.PIPE if stdout_pipe else subprocess.DEVNULL
        stderr = subprocess.PIPE if stderr_pipe else subprocess.DEVNULL

        if self.is_running:
            _LOGGER.warning("FFmpeg is already running!")
            return True

        # set command line
        self._generate_ffmpeg_cmd(cmd, input_source, output, extra_cmd)

        # start ffmpeg
        _LOGGER.debug("Start FFmpeg with %s", str(self._argv))
        try:
            proc_func = functools.partial(
                subprocess.Popen,
                self._argv,
                bufsize=0,
                stdin=subprocess.PIPE,
                stdout=stdout,
                stderr=stderr,
            )
            self._proc = await self._loop.run_in_executor(None, proc_func)
        except Exception as err:  # pylint: disable=broad-except
            _LOGGER.exception("FFmpeg fails %s", err)
            self._clear()
            return False

        return self._proc is not None