使用DirectShow

时间:2016-04-06 14:48:27

标签: vb.net video directshow video-codecs

我们有一个桌面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 个答案:

答案 0 :(得分:1)

代码段是正确的。 DirectShow本身(它的Intelligent Connect)以类似的方式寻找编解码器。

典型的问题是有两个独立的独立列表:32位编解码器和64位编解码器。安装32位编解码器时,64位列表没有它,反之亦然。

当您枚举编解码器时,您正在浏览与您的代码的位数相匹配的列表。 "已安装但不可见"编解码器在你的情况下在另一个列表中,并且具有不同的位数。