停止IMediaControl永远不会结束
我正在为我的C#/WPF项目使用DirectShowlib-2005.当相机启动时,我运行媒体控件: m_FilterGraph = new FilterGraph() as IFilterGraph2; /* Initializations */ IMediaControl mediaCtrl = m_FilterGraph as IMediaControl; hr = mediaCtrl.Run(); DsError.ThrowExceptionForHR(hr); 应用程序运行,相机运行良好.但是有时候(并非总是)我退出应用程序冻结时.我暂停了调试器,看到该应用程序停止在以下行上: if (m_FilterGraph != null) { IMediaControl mediaCtrl = m_FilterGraph as IMediaControl; mediaCtrl.Stop(); //
6 2024-04-26
编程技术问答社区
C#中的视频预览
我有一个网络摄像头捕获应用程序,我正在尝试在WPF UI中实现视频预览.捕获发生在C ++ DLL中.我有一个目前的解决方案,但对此我不太满意.主要目标是UI中的视频预览不会干扰C ++ DLL,因为它必须压缩视频帧并将其写入磁盘.我将无法显示每个帧,因为压缩是相当密集的. 我当前的视频预览解决方案是: 我的窗口中使用了一个图像控件,其源属性是数据示为bitmapsource,称为VideopReviewSource 我设置了一个system.threading.timercallback以更新我的预览.计时器回调函数派遣到可以更新UI的线程(使用this.dispatcher.begininvoke),该线程调用UpdatePreview() updatePreview()向视频框架询问C ++ DLL.对DLL的调用将图像的原始数据放入字节[] _rawimagedata中,我一次将其分配在窗口的构造函数中. updatePreview()然后将Vide
14 2024-04-25
编程技术问答社区
如何使用C#桌面应用程序将网络摄像头视频录制成MPEG或AVI文件
我正在开发一个桌面应用程序,该应用程序需要我连接到网络摄像头并记录(保存)MPEG,AVI,MP4和WMV格式,然后燃烧到CD/DVD中.该应用程序为胜利表格.我只是在寻找免费或开源的解决方案或控件. 我使用aforge.net保存了AVI,但它需要更多的尺寸来节省(例如15SCE 320x240视频的60-100MB).我期望为10秒的1MB. 这是代码: using System; using System.Drawing; using System.Windows.Forms; using AForge.Video; using AForge.Video.DirectShow; using AForge.Video.VFW; namespace Aforge_Web_Cam { public partial class VideoForm : Form { private FilterInfoCollection VideoCaptureDevices;
4 2024-04-23
编程技术问答社区
C#网络摄像机WM_CAP_CONNECT。当有多个采集源存在时,想强制选择一个采集源
我正在使用网络摄像头码代码,我在网上找到了通过C#a Web Cam访问的.在带有一个视频源的计算机上,它像魅力一样工作! (程序在启动时启动,找到网络摄像头,并且起作用). 虽然在具有许多视频源的计算机上(例如Web摄像头,然后在其上运行的ManyCAM),但该程序启动并查询用户使用的用户.我希望我的程序可以在机器重新启动时自动启动,因此等待用户输入会给它带来扳手,无论如何我可以强迫它选择第一个找到的源并随身携带吗? ? 所以我有一些网络摄像头代码,我确实在网上找到了: 现在,在准备这篇文章时,我做了更多的研究,发现我的问题在于以上代码: SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0); 这就是连接网络摄像头的原因,唯一的问题是,如果我有一个以上的源,上面会提出这个烦人的视频源对话框.我希望它仅使用第一个来源,以免对话框出现.我尝试传递0个位置的不同值,可以肯定的是,对话框不会出现,但也无法正常工作.任何人都知道我是
6 2024-04-23
编程技术问答社区
在Windows Phone 8中使用AudioVideoCaptureDevice显示当前视频?
我设法为Windows Phone 8应用程序设置了代码,该应用程序可以使用AudiovideCapturedevice来初始化/停止录制视频. (将其保存到irandomaccessstream中) //Initialize Camera Recording Windows.Foundation.Size resolution = new Windows.Foundation.Size(640, 480); captureDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, resolution); captureDevice.VideoEncodingFormat = CameraCaptureVideoFormat.H264; captureDevice.AudioEncodingFormat = CameraCaptureAudioFormat.Aac; captureDevi
2 2024-04-23
编程技术问答社区
从 WPF/Silverlight 动画创建视频
我有一个用XAML编写的动画.我需要从该动画创建视频(AVI).有办法做到吗? 解决方案 这是WPF(即不是Silverlight) 的方法 http://blogs.msdn.com/b/saveenr/archive/2008/09/09/22/wpf-xaml-saving-an-an-an-animation-an-an-animation-as-an-an-av-video-file. aspx 其他解决方案 如果您有表达式编码器,则可以执行以下操作: 创建一个空白的电影,该电影具有与动画一样多的框架(如果您弄错了,可以以后更改长度) 使用XAML动画叠加选项添加基于XAML的动画 将动画渲染为WMV 将视频从WMV转换为AVI(许多免费工具都会做到这一点) 我相信如果表达式编码器对您不起作用,也可以使用屏幕捕获软件,例如jing或camtasia. 其他解决方案 使用Silverlight我的方法是: 将帆布快照插入可写的b
10 2024-04-22
编程技术问答社区
不能用c#改变视频捕捉的分辨率
我正在尝试使用C#中的DirectShownet更改默认的网络摄像头分辨率,从我收集的内容中,我需要将其从Windows Win32 api dll中的内置incem in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in in noce capture capture.我有以下来自Directshownet的代码: hr = capGraph.SetFiltergraph( graphBuilder ); if( hr
8 2024-04-22
编程技术问答社区
使用网络摄像头捕捉视频并保存为avi,使用c#。
可能的重复: 网络摄像头捕获并转换为AVI 有什么方法可以使用C#? 解决方案 使用 aforge .经过良好的测试,经过良好的文献良好,维护良好. aforge.net Framework 是专为C#框架开发人员和 计算机领域的研究人员 视觉和人工智能 - 图像处理,神经网络, 遗传算法,机器学习, 机器人技术等
10 2024-04-21
编程技术问答社区
在C#中使用RTMP或RTSP协议
您知道有任何库,允许我使用RTMP或RTSP通信协议从C#发送从编码的音频/视频流到流服务器? 解决方案 http://www.streamcoders.com/看起来不错. rtsp.net 是Microsoft .NET Framework的RFC 2326兼容的软件堆栈.您可以从任何兼容.NET兼容的编程语言中使用它,例如C#,VB.NET或C ++/CLI. TCP交流 Unicast UDP 多播UDP http上的rtsp 多态性内容(XML,SDP,自定义) 交易层(基于请求响应模型) 其他解决方案 按照此链接. RTP.NET不再是流编码器的单独产品. rtp.net加上其他功能的全部功能包含在 mediaSuite.net.net.net . 其他解决方案 尝试此库:
4 2024-04-19
编程技术问答社区
我怎样才能学习DirectShow编程?
我是.net C#开发人员.我想开发有关视频/音频编解码器的媒体编程,从源来捕获媒体等. . 您是否有最好的教程或一些文章可以使初学者理解在直接架构中进行编程?如果是这样,请分享. 解决方案 您会发现这些有用: http://www.codeproject/a> /a> /a> 哦,这些也是如此: http://www.codeproject.com/kb/audio-video/dshowencoder.aspx /a> wm6.aspx tanvon_directshowfilters.aspx 希望会有所帮助. 问候 理查德 其他解决方案 花花公子,IMO最好在C ++中开发直接节目,您应该学习如何创建COM对象并非初始化它,C ++更快,当前可用直接显示库都在C ++中,所有情况都在C ++中C#中的代码项目非常适合学习直接秀的基本基础,但它们不是实际的解决方案.它们是在C#中使用它们的包装器
0 2024-04-19
编程技术问答社区
我怎样才能学习DirectShow编程?
我是.net C#开发人员.我想开发有关视频/音频编解码器的媒体编程,从源来捕获媒体等. . 您是否有最好的教程或一些文章可以使初学者理解在直接架构中进行编程?如果是这样,请分享. 解决方案 您会发现这些有用: http://www.codeproject/a> /a> /a> 哦,这些也是如此: http://www.codeproject.com/kb/audio-video/dshowencoder.aspx /a> wm6.aspx tanvon_directshowfilters.aspx 希望会有所帮助. 问候 理查德 其他解决方案 花花公子,IMO最好在C ++中开发直接节目,您应该学习如何创建COM对象并非初始化它,C ++更快,当前可用直接显示库都在C ++中,所有情况都在C ++中C#中的代码项目非常适合学习直接秀的基本基础,但它们不是实际的解决方案.它们是在C#中使用它们的包装器
2 2024-04-19
编程技术问答社区
浩然正气的相机框架
在3D模式下,如何访问HoloLens摄像头视频流中的所有帧?我正在使用C#. Unity VideoCapture类似乎没有提供此信息: http://docs.unity3d.com/550/documentation/scriptreference/vr.wsa.webcam.videocapture.html 和Microsoft MediaCapture具有方法MediaCapture.StartPreviewToCustomSinkAsync的类不是很好的记录. 解决方案 您可以尝试使用MediaCapture FrameReader API 文档: https://msdn.microsoft.com/en-gb/windows/UWP/UWP/UWIO-VIDEO-CAMERA/process-media-media-frames-with-mediaframes-with-mediaframereader#create-a-frame - 读取框架
20 2024-04-15
编程技术问答社区
c#中的blackmagic SDK
我正在尝试使用Windows7 64X上的最新SDK(2011年6月)和C# + vs 2010 Express捕获闪光强度专业卡(2011年6月)捕获720p. 我已经成功编译并运行了一个程序,该程序在YUV处捕获帧,但是,在56帧后捕获停止(回调函数停止被调用).我想知道我是否在这里缺少简单的东西?特别是考虑到我几乎在那儿 - 我的框架以正确的尺寸等,但仅在短时间内得到正确的内容. 还可能相关的其他一些信息: 如果我拔下插头,相机捕获不会停止 我也曾在1080i和PAL上尝试过,同样发生了 即使VideoinputFramRecrive功能为空,也会发生同一件事(即只有一个框架计数器) 这是代码: public partial class MainWindow : Window , IDeckLinkInputCallback { private IDeckLinkIterator _deckLinkIterator; priva
10 2024-04-15
编程技术问答社区
视频捕捉+上传+处理+流媒体--支持.NET和C#
我们正在尝试找出.NET堆栈中可用的任何技术/库(甚至是第三方DLL的包装器),这将帮助我们构建一个可以 的应用程序 1-从用户的视频设备捕获图像 2-将其实时上传到服务器 3-处理视频(在服务器中) - 例如:在视频中添加水印 4-将其流回用户/其他用户 最好是,第2和4步之间的时间延迟/延迟应为最小 第一个要求(捕获)似乎很简单.面临的挑战是确定一种适当的方法来进行上传,进行处理并将其流回去.有任何有效的建议或想法吗? 最近出现了Acrsoss ffmpeg库,并具有C#包装器. FFMPEG是否可以用于处理处理端? 解决方案 我会以这种方式进行操作: 使用Silverlight或Flash捕获摄像机输入,例如如在此处详细介绍. 您可以通过套接字您的服务器正在听. 在接收端,只需将套接字感知程序用作路由器程序,并连接了许多聆听工人.在工人和路由器程序之间,例如AMQP与 rabbitmq .发送异步消息(例如,具有反应性扩展),例如流编码
0 2024-04-13
编程技术问答社区
如何从一个像素字节数组中创建一个BitmapImage(实时视频显示)。
我需要在WPF控件上显示实时图像.我正在寻找使用WPF的最快方法. 我正在使用其dll api捕获来自相机的图像(图像是由DLL撰写的,相机将带有INTPTR的回调升至图像结构,称为 tframe (如下所述).像素数据存储在imageBuffer属性上,带有INPTR到字节数组. 我知道如何从像素字节数组中创建一个位图,但不是位图.因此,可以创建一个位图,然后从中创建一个位图. 在这里有一个创建一种方法来创建一种方法位于内存上的位图的位图.但是我想直接从数据源(TFRAME)创建 bitmapimage .我该怎么做? 我知道位映射具有复型固定方法,但它laks of setPixels. public struct tFrame { public IntPtr AncillaryBuffer; public uint AncillaryBufferSize; public uint AncillarySize; public t
4 2024-04-12
编程技术问答社区
如何在C#中获取网络摄像头图像?
我正在从事C#和.NET4.0中的在线视频会议项目. 我想要一个可以用来以不同形式收集网络相机图像的库或代码.我尝试使用Avicap32,其中我们以不同的目的发送消息,例如复制或编辑框架.但是在此中,我们必须在创建处理程序时传递图片框的参考,如下所示: mCapHwnd = capCreateCaptureWindowA("0", 268435456 | 1073741824, 0, 0, 640, 480,picturebox1.Handle.ToInt32(), 0); 使用这些命令我能够捕获图像,但是当我最大程度地减少图像框表单时,问题出现了.当时没有创建新图像. 我认为这发生了,因为我将表单最小化,并且当它从此剪贴板复制图像时,它没有显示任何内容. 我该如何解决这个问题.任何类型的帮助都将不胜感激. 谢谢 srdusad 解决方案 我已经使用所有提到的技术(WIA,AVICAP和DirectShow)完成了此操作. DirectShow是
6 2024-04-12
编程技术问答社区
使用.NET Technologies录制屏幕的视频
使用.NET Technologies有没有办法记录屏幕,桌面或窗口? 我的目标是免费的.我喜欢少量CPU使用且简单的想法,但是如果它们创建了更好的最终产品,我会考虑其他选择. 简而言之,我知道如何在C#中进行屏幕截图,但是我如何将屏幕或屏幕区域记录为视频? 解决方案 不需要第三方DLL.这种简单的方法将当前屏幕图像捕获到.NET位图对象中. private Image CaptureScreen() { Rectangle screenSize = Screen.PrimaryScreen.Bounds; Bitmap target = new Bitmap(screenSize.Width, screenSize.Height); using(Graphics g = Graphics.FromImage(target)) { g.CopyFromScre
2 2024-04-11
编程技术问答社区
如何使用C#.NET捕获视频的屏幕?
是否有一些库可以捕获一个屏幕作为压缩视频文件或一些可以做到的解决方案? 解决方案 您的最佳选择似乎是Windows Media Edgoder. 这里有一些资源: 在/a> 其他解决方案 此代码使用Nuget上可用的Sharpavi. using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using SharpAvi; using SharpAvi.Codecs; using SharpAvi.Output; using System.Windows.Forms; namespace Captura { // Used to Configure the Recorder publ
6 2024-04-10
编程技术问答社区
从网络摄像头捕捉图像并显示-OpenCV-Eclipse-Windows
我是OpenCV的新手,我想显示我的网络摄像头与OpenCV看到的内容.我正在使用C编码语言. 我已经尝试了此代码: #include #include // Include the OpenCV library #include // Include interfaces for video capturing int main() { cvNamedWindow("Window", CV_WINDOW_AUTOSIZE); CvCapture* capture =cvCreateCameraCapture(-1); if (!capture){ printf("Error. Cannot capture."); } else{ cvNamedWindow("Window", CV_WINDOW_AUTOSIZE); whi
12 2024-04-09
编程技术问答社区
Directshow视频捕获过滤器IAMBufferNegotiation::GetAllocatorProperties返回E_FAIL
我正在尝试检查音频/视频捕获过滤器的分配属性.我使用IAMBufferNegotiation::GetAllocatorProperties,并连接捕获过滤器的输出引脚.它可以与音频捕获过滤器一起使用,但不能使用视频捕获过滤器. 使用音频捕获过滤器: hresult:s_ok CBUFFERS:4 cbbuffer:88200 cbalign:1 cbprefix:0 带有视频捕获过滤器: HRESULT:E_FAIL(0x80004005),该文档未指定.他们说可能的值是:s_ok,e_pointer,vfw_e_not_connected(那为什么呢?为什么我可以获取视频捕获过滤器的IAMBufferNegotiation接口,甚至可以成功调用SuggestAllocatorProperties(返回S_OK),但会失败,而GetAllocatorProperties? 解决方案 使用音频,此接口用于将首选项应用于音频缓冲,在视频框架大小的情况下,请通
4 2024-04-09
编程技术问答社区