class_docstr: Finite state ffmpeg `-i` command option file information parser.
  Is designed to parse the output fast, in one loop. Iterates line by
  line of the `ffmpeg -i <filename> [-f null -]` command output changing
  the internal state of the parser.
  
  Parameters
  ----------
  
  filename
    Name of the file parsed, only used to raise accurate error messages.
  
  infos
    Information returned by FFmpeg.
  
  fps_source
    Indicates what source data will be preferably used to retrieve fps data.
  
  check_duration
    Enable or disable the parsing of the duration of the file. Useful to
    skip the duration check, for example, for images.
  
  decode_file
    Indicates if the whole file has been decoded. The duration parsing strategy
    will differ depending on this argument.
class_docstr_tok: ["Finite","state","ffmpeg","`","-i","`","command","option","file","information","parser",".","Is","designed","to","parse","the","output","fast",",","in","one","loop",".","Iterates","line","by","line","of","the","`","ffmpeg","-i","<","filename",">","[","-f","null","-","]","`","command","output","changing","the","internal","state","of","the","parser",".","Parameters","--","--","--","--","--","filename","Name","of","the","file","parsed",",","only","used","to","raise","accurate","error","messages",".","infos","Information","returned","by","FFmpeg",".","fps_source","Indicates","what","source","data","will","be","preferably","used","to","retrieve","fps","data",".","check_duration","Enable","or","disable","the","parsing","of","the","duration","of","the","file",".","Useful","to","skip","the","duration","check",",","for","example",",","for","images",".","decode_file","Indicates","if","the","whole","file","has","been","decoded",".","The","duration","parsing","strategy","will","differ","depending","on","this","argument","."]
docstr: Parses data from "Stream ... Audio" line.
docstr_tok: ["Parses","data","from","``","Stream","...","Audio","''","line","."]
code: def parse_audio_stream_data(self, line):
      """Parses data from "Stream ... Audio" line."""
      global_data, stream_data = ({"audio_found": True}, {})
      try:
          stream_data["fps"] = int(
              re.search(r" (\d+) Hz", line).group(1)
          )
      except (AttributeError, ValueError):
          # AttributeError: 'NoneType' object has no attribute 'group'
          # ValueError: invalid literal for int() with base 10: '<string>'
          stream_data["fps"] = "unknown"
      match_audio_bitrate = re.search(r"(\d+) kb/s", line)
      stream_data["bitrate"] = (
          int(match_audio_bitrate.group(1))
          if match_audio_bitrate
          else None
      )
      if self._current_stream["default"]:
          global_data["audio_fps"] = stream_data["fps"]
          global_data["audio_bitrate"] = stream_data["bitrate"]
      return (global_data, stream_data)
  
imports: import os
  import re
  import subprocess
  import warnings
  import numpy
  from moviepy.config import FFMPEG_BINARY
  from moviepy.tools import convert_to_seconds, cross_platform_popen_params
label_desc: Use image node_id 5 for calling the FFmpegInfosParser obj's underlying member method code with example usage: obj.parse_audio_stream_data(line) and returns: global_data,  stream_data