Отсутствует кодек в листинге с DirectShow
У нас есть настольное приложение для Windows (только 32-битное), которое показывает список кодеков, установленных на компьютере.
Тем не менее, мы обнаруживаем, что иногда в этот список не входят все кодеки, как мы обнаружили, - без каких-либо подробностей - когда мы устанавливаем кодеки h264vfw, и установка выполняется успешно. Однако после этого в списке кодек не отображается.
Вот код, который мы используем для получения полного списка кодеков:
Dim DsDevice as DirectShowLib.DsDevice
Private Function LlistaVideoCodecs() As List(Of String)
LlistaVideoCodecs = New List(Of String)
Dim llista = DsDevice.GetDevicesOfCat(FilterCategory.VideoCompressorCategory)
For Each oDevice As DsDevice In llista
If oDevice IsNot Nothing Then
LlistaVideoCodecs.Add(oDevice.Name)
Next
Return LlistaVideoCodecs
End Function
Как мы можем получить полный список всех установленных кодеков? Почему кодек h264vfw не отображается даже при успешной установке?
Спасибо за ваше время и вашу помощь.
1 ответ
Фрагмент кода о правильном. Сам DirectShow (его Intelligent Connect) ищет кодеки аналогичным образом.
Типичная проблема заключается в том, что существует два отдельных независимых списка: 32-разрядные кодеки и 64-разрядные кодеки. При установке 32-битного кодека в 64-битном списке его нет, и наоборот.
Когда вы перечисляете кодеки, вы идете по списку, который соответствует битности вашего кода. "Установленный, но невидимый" кодек находится в вашем случае в другом списке и имеет другую битность.