问题标签 [samplegrabber]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
directshow - 如何在 DirectShow 中使用 SampleGrabber 和 Matroska Muxer?
我制作了一个简单的图表来编写 MKV 文件。但我不想使用文件编写器。我想使用 SampleGabber 并使用简单的程序获取流。问题是我从 Matroska muxer 以外的任何地方获取数据!(我该怎么办?
(来源:narod.ru)
所以我的问题是如何在 DirectShow 中使用 SampleGrabber 和 Matroska Muxer?
c++ - 如何实现您自己的自定义 DirectShow 渲染器?
如何实现您自己的自定义 DirectShow 渲染器,该渲染器可以正常工作或代替 SampleGrabber?
c# - Samplegrabber 在 AVI/MPEG 文件上运行良好,但在 WMV 上运行不稳定
我一直在使用最新版本的WPFMediaKit。我要做的是编写一个示例应用程序,该应用程序将使用 Samplegrabber 来捕获视频文件的视频帧,以便我可以将它们作为单独的位图。
到目前为止,在构建和渲染我的图表时,我对以下代码很幸运。但是,当我使用此代码播放 .wmv 视频文件时,当附加了 samplegrabber 时,它会播放跳跃或断断续续的。如果我注释掉添加 samplegrabber 过滤器的行,它可以正常工作。同样,它可以与 AVI/MPEG 等正确使用采样采集器。
和:
我读过一些东西说 .wmv 或 .asf 格式是异步的。我试图插入一个 WMAsfReader 来解码哪个有效,但是一旦它进入 VMR9,它就会给出相同的行为。此外,当我注释掉该IBaseFilter renderer = CreateVideoMixingRenderer9(m_graph, 1);
行并拥有它时,我已经让它正常工作了filterGraph.Render(pins[0]);
——唯一的缺点是现在它呈现在它自己的 Activemovie 寡妇中,而不是我的控件中,但是 samplegrabber 正常运行并且没有任何跳过。所以我认为这个错误是在 VMR9 / samplegrabbing 某处。
有什么帮助吗?我是新来的。
c# - 使用 DirectShowNet 寻找关键帧
我的任务是:我创建一个图形,将 SampleGrabber 附加到它,并在构建图形后使用 IMediaSeeking 界面抓取关键帧。
以下是我所做的: 在 Main 方法中:
在 SampleCB() 回调方法中:
因此,我已经设置了这些东西。现在,当我运行程序时,一切都正确加载。但是回调只被调用一次,然后渲染停止。没有更多的渲染,也没有更多的回调。我尝试了另一种回调方法 ISampleGrabber::BufferCB() 来查看它是否遵循相同的命运。但不是!每次抓取一帧并渲染视频直到结束时都会调用 BufferCB()。
我究竟做错了什么?对此有何建议?谢谢 :)
directshow - 使用 IMediaSample DirectShow.Net 寻找关键帧
据我所知,为了检查一个帧是否是关键帧,我必须检查 IMediaSample::IsSyncPoint() 方法,如果该帧是关键帧,则返回 0 (S_OK),否则返回 false其他情况。
但是 IsSyncPoint() 方法只是在抓取并传递给 ISampleGrabberCB::SampleCB() 回调方法的每一帧中返回 0。
我的回调包含的代码很简单:
我在这里想念什么?
c++ - 在 DirectShow 中找出 samplegrabber 何时准备就绪
我正在继续开发我的 DirectShow 应用程序,并且正在对其进行最后的润色。程序正在做的是以 1 秒为间隔浏览一个视频文件,并从采样器中捕获当前缓冲区并在继续之前对其进行处理。但是,我注意到我在测试中得到了重复的图像,我发现 DirectShow 在 1 秒间隔内没有足够快地通过视频增加。我的问题是是否有办法检查 DirectShow 何时准备好让我调用 samplegrabber 以获取当前帧并进行处理。目前我叫 sleep 1 秒钟,但必须有更好的方法。预先感谢您的帮助。
编辑
我只是尝试运行检查以查看视频的位置是否等于我想要抓取和处理的下一个位置。这减少了重复帧的数量,但我仍然看到它们以块的形式出现。
filter - 如何确保 Sample Grabber 过滤器在关闭我的 DirectShow 过滤器图时不再生成任何回调?
我有一个使用 DSPACK 组件库用 Delphi 6 编写的 DirectShow 应用程序。当我关闭过滤器图(停止播放)时,由于在拥有回调方法的对象被销毁后发生来自 Sample Grabber DirectShow 过滤器的回调,我得到了访问冲突。它不会每次都发生,但经常发生。有人可以向我指出一个代码示例或文档,告诉我我需要采取哪些步骤来关闭我的图表,以确保已收到或消除所有待处理的 Sample Grabber 回调?
directshow - 在 DirectShow 中获取捕获的视频帧的不同方法
我正在使用回调机制来获取媒体应用程序中的网络摄像头帧。它可以工作,但由于在回调本身中执行了某些额外的缓冲区功能,所以速度很慢。
现在我正在尝试另一种获取帧的方法。也就是说,调用一个方法并抓取帧(而不是回调)。我在 CodeProject 中使用了一个使用 IVMRWindowlessControl9::GetCurrentImage 的示例。
我遇到了以下问题。
- 在 Microsoft 网络摄像头中,预览版在 Windows 7 上没有呈现(仅黑屏)。但同一个摄像头在 XP 上呈现了预览版。
我的疑问是,VMR 特定功能是否会依赖于不同平台上的相机驱动程序?否则,怎么会出现这种差异?
- 无论示例应用程序在哪里工作,我都观察到生成的 BITMAPINFOHEADER 结构的 biBitCount 成员是 32。
这是应用程序设置的值还是 VMR 操作的驱动程序设置?这是如何配置的?最后,获取网络摄像头帧的最佳方法是什么?回调方法?还是直接方法?
提前致谢,
memory-leaks - Microsoft DTV-DVD 视频解码器内存泄漏?
在 AVI 容器视频文件中渲染 h.264 期间,我的应用程序的内存消耗以高速上升,大约 150 Mb/min。
这是我的图表图像的链接:http: //picturepush.com/public/8926555
如果使用 LAV 视频解码器 insted - 没有内存泄漏。
首先我建议,泄漏发生在我的代码中,但我只是关闭(在回调开始时设置“返回 S_OK”)两个样本抓取器过滤器 - 泄漏继续。
我也尝试在这样的停止图之后释放每个过滤器,但这没有删除泄漏:
对任何建议都会很高兴,如何消除内存泄漏?
我在 graphedit 上创建了不同的图表,并观察了重复播放短(6 秒)h.264 视频文件:
- picturepush.com/public/8931745 - 完整图 - +6 Mb 每次播放后都会增长私有字节
- picturepush.com/public/8931760 - 带 DMO 转换器,不带采样器 - 无内存泄漏
- picturepush.com/public/8931766 - 使用 DMO 转换器,没有采样器,但使用视频渲染器 - 每次播放后 +7 Mb 增长私有字节
- picturepush.com/public/8931770 - 只有解码器 - 没有内存泄漏
directshow - c ++ builder:使用directshow将视频转换为png-snapshots
感谢您的帮助,我能够更好地搜索正确的单词来使用 directshow。我在这里找到了如何使用 SampleGrabber 对象的教程:http: //msdn.microsoft.com/en-us/library/windows/desktop/dd407288%28v=vs.85%29.aspx
我可以实现它并对其进行一些修改,这样它不仅可以保存第一帧,还可以将每个帧保存为 PNG。为此,我使用电晕。但是,我只是猜测了一些东西,不太清楚哪些缓冲区包含我的数据以及以哪种形式。
所以,我基本上有 3 个问题:
我使用 SavePNG 对吗?生成的图像是颠倒的!
我可以用连接到相机的视频替换 BaseFilter 吗?
包含 pBuffer 我的 Imagedata,所以我可以通过简单地键入 pBuffer[123] 来获取 rgb 字节信息?
我正在使用 embarcadero 的 C++-Builder (XE2 16)。
这是我在网站上找到的代码,稍作修改(删除了错误处理以获得更好的视图。在每个 hr=... 之后有一个失败检查):
我希望我没有做任何可怕的错误......我真的试图研究一切^^有人知道我上面的3个问题吗?我在这里发现了一些非常错误的地方,我也很感激你告诉我,所以我可以修复和改进。
问候,朱利安