original_string: private function ffprobe($binary = null)
  	{
  		if (is_null($binary))
  		{
  			$binary = static::$ffprobe;
  		}
  
  		if (!isset($this->metadata))
  		{
  			$cmd   = "{$binary} -v quiet -print_format json -show_format -show_streams {$this->file}";
  
  			exec($cmd, $output, $returnvalue);
  
  			$json = json_decode( implode("\n", $output), true );
  
  			if (!is_array($json))
  			{
  				$json = false;
  			}
  
  			$this->metadata = $json;
  
  			if ($this->ffprobeHasFormat())
  			{
  				$this->formats = array_filter(explode(",", $json['format']['format_name']));
  			}
  		}
  	}
code: private function ffprobe($binary = null)
  	{
  		if (is_null($binary))
  		{
  			$binary = static::$ffprobe;
  		}
  
  		if (!isset($this->metadata))
  		{
  			$cmd   = "{$binary} -v quiet -print_format json -show_format -show_streams {$this->file}";
  
  			exec($cmd, $output, $returnvalue);
  
  			$json = json_decode( implode("\n", $output), true );
  
  			if (!is_array($json))
  			{
  				$json = false;
  			}
  
  			$this->metadata = $json;
  
  			if ($this->ffprobeHasFormat())
  			{
  				$this->formats = array_filter(explode(",", $json['format']['format_name']));
  			}
  		}
  	}
code_tokens: private function ffprobe ( $ binary = null ) { if ( is_null ( $ binary ) ) { $ binary = static :: $ ffprobe ; } if ( ! isset ( $ this -> metadata ) ) { $ cmd = "{$binary} -v quiet -print_format json -show_format -show_streams {$this->file}" ; exec ( $ cmd , $ output , $ returnvalue ) ; $ json = json_decode ( implode ( "\n" , $ output ) , true ) ; if ( ! is_array ( $ json ) ) { $ json = false ; } $ this -> metadata = $ json ; if ( $ this -> ffprobeHasFormat ( ) ) { $ this -> formats = array_filter ( explode ( "," , $ json [ 'format' ] [ 'format_name' ] ) ) ; } } }
docstring: Runs an ffprobe on the file or returns cached information.
  
  @return array|false
docstring_tokens: Runs an ffprobe on the file or returns cached information .