如何在WPF-Mediakit中使用ffdshow

时间:2017-09-24 13:15:06

标签: c# wpf dxva ffdshow wpf-mediakit

默认情况下是LAV解码器,但我想使用ffdshow和硬件加速进行解码。 我在 ClassId.cs

文件中看到了这些行
public static readonly Guid FFDShowVideo = new Guid("04FE9017-F873-410e-871E-AB91661A4EF7");
public static readonly Guid FFDShowVideoRaw = new Guid("0B390488-D80F-4a68-8408-48DC199F0E97");
public static readonly Guid FFDShowVideoDXVA = new Guid("0B0EFF97-C750-462c-9488-B10E7D87F1A6");

使用过的解码器在 MediaUriPlayer

中定义
public MediaUriPlayer()
{
    Splitter = "LAV Splitter";
    SplitterSource = "LAV Splitter Source";
    VideoDecoder = "LAV Video Decoder";
    AudioDecoder = "LAV Audio Decoder";
}

所以问题是,如何启用FFDShowVideoDXVA?什么是解码器的正确名称,或者我完全走错路?

如果我设法启用FFDShowVideoDXVA,默认情况下是否启用了硬件加速(如果没有,我如何以编程方式启用它?

非常感谢。

1 个答案:

答案 0 :(得分:0)

LAV过滤器也有硬件加速,请参阅https://github.com/Sascha-L/WPF-MediaKit/wiki/Usage。但是,必须手动设置。已经有GitHub issue #31自动设置加速度。

如果要强制执行ffdshow,可以设置MediaUriPlayer.VideoDecoder, Splitter属性。 (那些GUID没有在代码中使用。)我不知道ffdshow的细节,但IMO类似:你必须手动设置DXVA。