fixed #6057: Support FFmpeg 5.0

This commit is contained in:
Jaex 2022-01-30 04:31:07 +03:00
parent 4a132700f2
commit 081a65edc9

View file

@ -230,20 +230,19 @@ public DirectShowDevices GetDirectShowDevices()
string output = Output.ToString();
string[] lines = output.Lines();
bool isVideo = true;
Regex regex = new Regex(@"\[dshow @ \w+\] ""(.+)""", RegexOptions.Compiled | RegexOptions.CultureInvariant);
bool isAudio = false;
Regex regex = new Regex(@"\[dshow @ \w+\] +""(.+)""", RegexOptions.Compiled | RegexOptions.CultureInvariant);
foreach (string line in lines)
{
if (line.Contains("] DirectShow video devices", StringComparison.InvariantCulture))
if (line.Contains("] DirectShow video devices"))
{
isVideo = true;
isAudio = false;
continue;
}
if (line.Contains("] DirectShow audio devices", StringComparison.InvariantCulture))
else if (line.Contains("] DirectShow audio devices"))
{
isVideo = false;
isAudio = true;
continue;
}
@ -251,15 +250,24 @@ public DirectShowDevices GetDirectShowDevices()
if (match.Success)
{
string value = match.Groups[1].Value;
if (isVideo)
if (line.EndsWith("\" (video)"))
{
devices.VideoDevices.Add(value);
isAudio = false;
}
else if (line.EndsWith("\" (audio)"))
{
isAudio = true;
}
string deviceName = match.Groups[1].Value;
if (isAudio)
{
devices.AudioDevices.Add(deviceName);
}
else
{
devices.AudioDevices.Add(value);
devices.VideoDevices.Add(deviceName);
}
}
}