C#でDirectShowNetを使用してデフォルトのWebカメラの解像度を変更しようとしていますが、WindowsのVideoInfoHeaderクラスを呼び出すことから変更する必要があります。 。私はDirectShowNetから次のコードを持っている:C#でビデオキャプチャの解像度を変更できない#
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(メディア) (HRESULTからの例外:0x80040209)
私は変更できないようにVideoInfoHeaderビットを読み取ることはありませんウェブカメラのキャプチャの解像度は、誰でもこれを行うための良い方法やこれを修正する方法を知っていますか?
カメラでサポートされている解像度のリストを取得する:http://stackoverflow.com/questions/20414099/videocamera-get-supported-resolutions/20418718#20418718 – Vijayaraghavan