code: async def _process_lines(self, pattern: Optional[str] = None) -> None:
          
          if pattern is not None:
              cmp = re.compile(pattern)
  
          _LOGGER.debug("Start working with pattern '%s'.", pattern)
  
          # read lines
          while self.is_running:
              try:
                  line = await self._input.readline()
                  if not line:
                      break
                  line = line.decode()
              except Exception:  # pylint: disable=broad-except
                  break
  
              match = True if pattern is None else cmp.search(line)
              if match:
                  _LOGGER.debug("Process: %s", line)
                  await self._que.put(line)
  
          try:
              await self._loop.run_in_executor(None, self._proc.wait)
          finally:
              await self._que.put(None)
              _LOGGER.debug("Close read ffmpeg output.")
docs: Read line from pipe they match with pattern.