使用Vlc.DotNet打开摄像头并截图 C#
参考上一篇 使用vlc打开usb摄像头
理论上输入下面地址
"dshow:// :dshow-size=1600*1200:dshow-vdev=USB CAM2"
C#就能打开摄像头了
类似打开本地文件或者rtsp之类的网络地址
但实际测试怎么着都是打开第一个摄像头,第二个怎么也打不开
实际上vlc打开网络串流那里复制这个地址进去也是只能打开第一个摄像头
注意到
media.AddOption
这个方法
就试了一下,发现分辨率可以控制了,摄像头也可以选择了
但这里需要摄像头名字
:dshow-vdev
就只好根据上一篇AForge来获取了
使用AForge.NET Framework打开摄像头并截图 C#
反正研究这个就是为了补充AForge不支持的摄像头打开。AForge开发轻松得多,也更好用
Vlc.DotNet.Forms.VlcControl cc = new Vlc.DotNet.Forms.VlcControl(); cc.Width = 500; cc.Height = 400; cc.Top = 100; cc.Left = 100; Vlc.DotNet.Core.Medias.MediaBase media = new Vlc.DotNet.Core.Medias.LocationMedia("dshow:// "); media.AddOption(":dshow-size=1600*1200"); media.AddOption(":dshow-vdev=USB CAM2"); cc.Play(media); this.Controls.Add(cc); cc.BringToFront(); //cc.TakeSnapshot("D:\\111.jpg", 1600, 1200);//截图
注意
Vlc.DotNet.Core.Medias.MediaBase media = new Vlc.DotNet.Core.Medias.LocationMedia("dshow:// ");
初始化MediaBase 时只需
"dshow:// "
即可
选择哪个相机需要AddOption
,选择分辨率之类的参数也要AddOption
但不支持相机index,必须相机name,可以参考使用AForge.NET Framework打开摄像头 C#获取对应index的name