gpt4 book ai didi

c# - 无法使用 C# 更改视频捕获分辨率

转载 作者:行者123 更新时间:2023-11-30 16:32:02 28 4
gpt4 key购买 nike

我正在尝试使用 C# 中的 DirectShowNet 更改默认网络摄像头分辨率,据我所知,我需要通过调用 Windows win32 api dll 中的内置 VideoInfoHeader 类来更改它以进行 avi 捕获。我有来自 DirectShowNet 的以下代码:

        hr = capGraph.SetFiltergraph( graphBuilder );
if( hr < 0 )
Marshal.ThrowExceptionForHR( hr );

AMMediaType media = new AMMediaType();
media.majorType = MediaType.Video;
media.subType = MediaSubType.RGB24;
media.formatType = FormatType.VideoInfo; // ???
hr = sampGrabber.SetMediaType(media);
if (hr < 0)
Marshal.ThrowExceptionForHR(hr);

hr = graphBuilder.AddFilter( capFilter, "Ds.NET Video Capture Device" );
if( hr < 0 )
Marshal.ThrowExceptionForHR( hr );

DsUtils.ShowCapPinDialog( capGraph, capFilter, this.Handle );

Guid sub = MediaSubType.Avi;
hr = capGraph.SetOutputFileName( ref sub, fileName, out mux, out sink );
if( hr < 0 )
Marshal.ThrowExceptionForHR( hr );

Guid cat = PinCategory.Capture;
Guid med = MediaType.Video;
hr = capGraph.RenderStream( ref cat, ref med, capFilter, null, mux ); // stream to file
if( hr < 0 )
Marshal.ThrowExceptionForHR( hr );


media = new AMMediaType();
hr = sampGrabber.GetConnectedMediaType(media);
if (hr < 0)
Marshal.ThrowExceptionForHR(hr);
if ((media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero))
throw new NotSupportedException("Unknown Grabber Media Format");

videoInfoHeader = (VideoInfoHeader)Marshal.PtrToStructure(media.formatPtr, typeof(VideoInfoHeader));
Marshal.FreeCoTaskMem(media.formatPtr); media.formatPtr = IntPtr.Zero;

问题是我无法访问 videoInfoHeader,因为在这一行:hr = sampGrabber.GetConnectedMediaType(media);它说 hr 小于 0 所以抛出这个错误:一个接口(interface)有太多的方法来触发事件(HRESULT 异常:0x80040209)

它不会读取 VideoInfoHeader 位,所以我无法更改网络摄像头捕获的分辨率,有人知道更好的方法或如何解决这个问题吗?

最佳答案

确保在查找 HR 错误代码时使用 DirectShow Error and Success Code list 查找它们,而不是通用的 HR 代码列表。您将从该列表中看到 0x80040209 的实际含义是:

VFW_E_NOT_CONNECTED The operation cannot be performed because the pins are not connected.

看起来你的图表没有连接你的样本采集器过滤器。确保在调用 RenderStream 时传递样本采集器.

关于c# - 无法使用 C# 更改视频捕获分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413141/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com