C# .Net Framework 4及更高版本的DirectDraw问题
我正在从事一个项目,该项目使用FilgraphManager类播放视频。该项目在.Net Framework 3.5中运行正常,但当我将该项目升级到Framework 4或更高版本时,DirectDraw加载该文件时出现了一些问题,使其几乎无法使用。还有其他人遇到过同样的问题吗 图1-.Net Framework 3.5 图2-.Net Framework 4C# .Net Framework 4及更高版本的DirectDraw问题,c#,video,directshow,directshow.net,C#,Video,Directshow,Directshow.net,我正在从事一个项目,该项目使用FilgraphManager类播放视频。该项目在.Net Framework 3.5中运行正常,但当我将该项目升级到Framework 4或更高版本时,DirectDraw加载该文件时出现了一些问题,使其几乎无法使用。还有其他人遇到过同样的问题吗 图1-.Net Framework 3.5 图2-.Net Framework 4 public bool LoadFile(string sfile, Form parentHandler) {
public bool LoadFile(string sfile, Form parentHandler)
{
graphManager.RenderFile(sfile);
try
{
parentHandler.Left = 0;
parentHandler.Top = 0;
parentHandler.Width = graphManager.Width;
parentHandler.Height = graphManager.Height;
mControl = graphManager;
mPosition = graphManager;
mWindow = graphManager;
mWindow.Owner = parentHandler.Handle.ToInt32();
mWindow.WindowStyle = WS_CHILD;
mWindow.SetWindowPosition(parentHandler.ClientRectangle.Left,
parentHandler.ClientRectangle.Top,
parentHandler.ClientRectangle.Width,
parentHandler.ClientRectangle.Height);
parentHandler.Opacity = 1;
m_objMediaEvent = graphManager as IMediaEvent;
m_objMediaEventEx = graphManager as IMediaEventEx;
m_objMediaEventEx.SetNotifyWindow((int)parentHandler.Handle, WM_GRAPHNOTIFY, 0);
mPosition = graphManager as IMediaPosition;
mControl = graphManager as IMediaControl;
m_objBasicAudio = graphManager as IBasicAudio;
}
catch (Exception) { mWindow = null; return false; }
finally
{
graphManager.Run();
m_CurrentStatus = MediaStatus.Running;
}
return true;
}
它看起来不像是.NET版本。众所周知,股票H.264解码器在调试器下尝试独立运行时会产生类似的伪影。它也不是DirectDraw(主题)。我注意到,如果我们在Visual Studio中运行此代码,它会产生前面提到的噪音,但是如果我们从外部(bin文件夹)运行相同的应用程序,它可以完美地工作。我不知道为什么。它看起来不像是.NET版本。众所周知,股票H.264解码器在调试器下尝试独立运行时会产生类似的伪影。它也不是DirectDraw(主题)。我注意到,如果我们在Visual Studio中运行此代码,它会产生前面提到的噪音,但是如果我们从外部(bin文件夹)运行相同的应用程序,它可以完美地工作。我不知道为什么。