Tag: video

在特定时间启动和停止MediaElement

我将应用程序更改为WPF,它根据定时事件播放音频,video和图片。我使用“string MciCommand = string.Format(”播放帧从{0}到{1} {2}“”,之前。 我一直在寻找并试图在WPF中解决这个问题c# 我有一个video(wmv),我有多个部分需要一起播放。 例子.. section1 start(200ms)stop(250ms)section2 start(5000ms)stop(15000ms) 最后我需要它暂停一个静止的框架.. 我试过使用一个计时器,一个空的while循环,它没有正确寻找。 我很茫然媒体元素似乎不支持这种类型的使用。 我想过wpfmediakit和直接展示很难包装我的新手wpf技能。 任何帮助将不胜感激…

对现有video加水印

我正在寻找一种用C#为video加水印的方法。 在上面写文字。 图片或文字标签…… 我该怎么做? 谢谢。

在C#中绘制video

我正在制作一个应用程序,允许用户应用某些工具来分析video和图像。 我需要帮助我如何在我的表单中加载到Windows媒体播放器中的video上绘制/写入并能够保存它。 它需要能够让用户在其上绘制手绘和形状。 提前致谢, 克里斯 :)

如何在WPF中从原始帧渲染video?

我有一个特殊的摄像机(使用GigEVision协议),我使用提供的库控制。 我可以订阅帧接收事件,然后通过IntPtr访问帧数据。 在我的旧WinForms应用程序中,我可以通过从数据创建Bitmap对象并将其设置为PictureBox图像,或者通过将PictureBox句柄传递给提供的库中的函数来直接绘制该区域来渲染帧。 在WPF中执行类似操作的最佳和最快方法是什么? 摄像机可在30到100 fps的范围内运行。 编辑(1): 由于帧接收事件不在UI线程上,因此它必须跨线程工作。 编辑(2): 我找到了一个使用WriteableBitmap的解决方案: void camera_FrameReceived(IntPtr info, IntPtr frame) { if (VideoImageControlToUpdate == null) { throw new NullReferenceException(“VideoImageControlToUpdate must be set before frames can be processed”); } int width, height, size; unsafe { BITMAPINFOHEADER* b = (BITMAPINFOHEADER*)info; width = b->biWidth; height = b->biHeight; size = (int)b->biSizeImage; } if (height […]

如何从.movvideo文件头(QuickTime文件格式)中读取比特率信息?

我一直试图从.mov文件(QuickTime文件格式)的元数据中读取一些值,但成效有限。 我一直在使用以下链接作为参考: QuickTime文件格式规范简介 我已经设法正确定位和读出/计算媒体持续时间,但我似乎无法找到存储比特率信息的primefaces。(primefaces是文件内部元数据的内部块)。 如果有人能指出我正确的Atom阅读,我会好好读它…我甚至无法在文档中找到它。 “比特率”仅在整个文档中提及过几次。 更新>>> 通过@szatmary下面提供的非常有限的信息,我已经从相关的跟踪primefaces解析了样本大小primefaces和样本primefaces的时间 ,但是我得到了一些奇怪的值。 例如,我不断获得样本大小值1 (当从具有恒定比特率的多个不同单个video.mov文件中读取时)。 相关文档(来自上面的链接)说: 样本量 一个32位整数,指定样本大小。 如果所有样本的大小相同,则此字段包含该大小值。 如果此字段设置为0,则样本具有不同的大小,并且这些大小存储在样本大小表中。 因此该字段的值为1 ,这意味着所有样本具有相同的大小,并且[ 样本大小表 ]字段中的条目数与样本时间表的单个条目中的样本计数字段的数量相匹配(一些非常大的数字)。 文档说明了这一点: …如果video媒体具有恒定的帧速率,则该表将具有一个条目,并且计数将等于样本的数量。 因此video具有恒定的比特率。 但是,当从样本大小表中读取大小条目时,它们都是不同的且非感性的…有些是0,而有些则是非常大的数字,大约40000.如果video具有恒定位,为什么它们不同评价,或者在这种情况下我不应该阅读它们吗? 我发现的另一个问题是Sample to Sample Atom的Time to Sample Table中的单个条目具有以下值: 样本数: 一些非常大的数字 (预期) 样本持续时间:1 不幸的是,文档(来自上面的链接)非常简单: 时间表样本 一个表,用于定义介质中每个样本的持续时间。 每个表条目包含计数字段和持续时间字段。 那么这1值使用哪些单位( 样本持续时间和样本量 )? 任何有关计算正确比特率的进一步帮助将不胜感激。 请注意,我一直在考虑文件的Big-Endian ,并在读取之前反转每个字段值的字节。 更新2 >>> 我已经设法计算出采样率的计算如下: 媒体持续时间=持续时间/时间刻度(来自电影标题primefaces或轨道标题primefaces )采样率=样本计数(来自样本时间primefaces )/媒体持续时间 我现在只需要破解比特率 ,需要进一步的帮助。

需要在C#应用程序中从摄像头捕获video流

我需要构建一个满足以下要求的应用程序。 它可以是Windows客户端,Silverlight客户端或WPF客户端。 屏幕将在2个独立的窗口中显示来自2个独立摄像头的video流 需要具有PVR类型的function…… 2.1显示实时流2.2暂停和播放前30秒的video 我正在尝试使用我拥有的C#应用​​程序开发资源但是我没有任何video捕获经验。 我可以看一下图书馆方面的帮助或最好的方法。 谢谢Cronline

C#.NET中的FLV / F4V对话库?

是否有任何库可以在c#.NET中以编程方式将输入video(某些特定video文件)转换为f4v或flv? 提前致谢。

如何根据时间或百分比剪切/裁剪/修剪video,并将输出保存在不同的文件中

是否有任何教程或ac#库可以帮助我完成以下任务 选择要编辑的文件 要求用户选择剪切/裁剪/修剪方法: – 按时间或按百分比 按所选时间或百分比剪切/裁剪/修剪video(假设我希望将5分钟video缩小为4分钟video,或将video缩小80%) 按要求在所需路径中保存video 现在步骤1)和4)我已经实现但找不到一个好的c#库来完成3)和4) 我查找了ffmpeg库,但找不到一个好的C#包装器来完成这些要求 任何帮助将深表感谢 谢谢

在C#中显示来自原始未压缩字节源的实时video:WPF与Win表单

我有一个实时的16位灰度video流,通过内存中的环形缓冲区作为原始的未压缩字节流(每像素2个字节,2 ^ 18像素/帧,32帧/秒)。 (这来自科学级相机,通过PCI帧抓取器)。 我想对video进行一些简单的处理(剪辑动态范围,着色,添加叠加),然后使用C#在窗口中显示它。 我使用Windows Forms和GDI工作(对于每个帧,构建一个Bitmap对象,根据我的后处理步骤写入原始的32位RGB像素值,然后使用Graphics类绘制帧)。 但是这使用了我想要用于其他事情的大量CPU。 所以我对使用WPF进行GPU加速video显示感兴趣。 (我也想开始使用WPF来实现其数据绑定和布局function。) 但我之前从未使用过WPF,所以我不确定如何处理这个问题。 我在网上发现的关于video和WPF的大多数内容涉及从磁盘(例如WMV)读取压缩video文件,或者使用Windows已经理解的驱动程序层从消费级相机获取流。 所以它似乎不适用于此(但如果我错了,请纠正我)。 所以,我的问题: 是否有基于WPF的直接方式从内存中的原始未压缩字节播放video(即使只是8位灰度或24位RGB)? 我是否需要构建DirectShowfilter(或其他DirectShow / Media Foundation-ish的东西)才能在GPU上进行后期处理? 此外,任何适合这些任务的文档,示例,博客等的一般建议/建议都将受到赞赏。 谢谢! 后续:经过一些实验,我发现WriteableBitmap足够快,满足我的需求,并且非常容易正确使用:只需调用WritePixels() ,任何绑定到它的Image控件都会自行更新。 具有内存映射部分的InteropBitmap明显更快,但我不得不将p / InteropBitmap写入kernel32.dll以在.NET 3.5上使用它。

快速video显示WPF

我正在开发一个WPF应用程序,需要以快速帧速率显示多个video流(我们希望30 fps)。 video流是1920×1080原始(RGB24)帧(它们存储在System.Drawing.Bitmap中)。 有没有人对如何实现这一点有任何想法? 更多细节: 我们之前的尝试使用了标准的WPF图像控件,改变了每帧的源。 这适用于单个流,但现在我们必须渲染多个流,它正在放慢速度。 我们还尝试使用Direct2D来处理绘图,使用D3D9共享曲面作为Image控件的源。 虽然这个速度更快,但我们仍然无法从中获得稳定的30fps(当事情恢复时它会在24-32 fps之间跳跃)。 video流在后台线程中进入,然后被封送(使用窗口的Dispatcher)到适当的UI线程进行绘制。 然后在UI线程上完成所有绘图。 我们还尝试为每个窗口提供自己的线程。 如果有人想看,我可以提供我们尝试过的代码示例。 谢谢!