public function getAvailableCodecs()
	{
		$codecs = [];
		$bit = ['.' => 0, 'A' => 1, 'V' => 2, 'S' => 4, 'E' => 8, 'D' => 16];
		
		try
		{
			foreach (['encoders', 'codecs'] as $command)
			{
				$process = new Process(sprintf('"%s" "-%s"', $this->options['ffprobe.path'], $command));
				$process->start();
				
				while ($process->getStatus() !== Process::STATUS_TERMINATED)
				{
					usleep(200000);
				}
				
				if (preg_match_all('/\s([VASFXBDEIL\.]{6})\s(\S{3,20})\s/', $process->getOutput(), $matches))
				{
					if ($command == 'encoders')
					{
						foreach ($matches[2] as $key => $value)
						{
							$codecs[$value] = $bit[$matches[1][$key]{0}] | $bit['E'];
						}
					}
					else // codecs, encoders + decoders
					{
						foreach ($matches[2] as $key => $value)
						{
							$key = $matches[1][$key];
							$codecs[$value] = $bit[$key{2}] | $bit[$key{0}] | $bit[$key{1}];
						}
					}
				}
			}
		}
		catch (\Exception $exception)
		{
		
		}
		
		return $codecs;
	}