问题标签 [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.

0 投票
1 回答
987 浏览

c++ - 使用 C++ 中的 directshow 过滤器从视频中捕获帧

我从网上获取了一个代码来从视频文件中捕获一帧并修改为捕获所有帧并将其存储为 bmp 图像。

输入视频文件有 132 帧。但只生成了 68 张图像。还为最后 38 张图像捕获视频的最后一帧。

我认为 directshow 图表正在连续运行,并且 WriteBitmap() 缺少帧。

如何让directX中的控件捕获一帧并将其写入bmp文件并捕获下一帧,从而将所有帧捕获为bmp图像。

谢谢阿伦

0 投票
1 回答
22 浏览

html - 不在 Facebook 上加载我的网站

示例链接是:http ://upfrontnews.us/news.php?id=24

当我将此链接放在 facebook 上时,facebook 不会加载此链接内容并加载其他内容,我认为这个问题与 html 有关

0 投票
1 回答
301 浏览

c++ - ISampleGrabberFilter 一次一帧步骤

我有一个图形端点,它是一个SampleGrabber,我使用回调函数获取所有帧的未压缩数据。

在我的顶级接口代码中,我想要一个函数ReadNextFrame()来获取图中下一帧的数据(直到它到达文件末尾)。

一个性能方面的糟糕实现是将 nextFrameIndex 传递给grabberCB类,指定此时我想要哪个帧。所以我的回调函数会跳过所有其他帧,只选择我想要的帧。这是昂贵的,因为图形必须遍历整个文件才能选择单个帧数据。

我注意到有一个IVideoFrameStep接口,这正是我想要的。但似乎这个接口与 Sample Grabber 不兼容,它的文档说:

在 Microsoft DirectShow 下实现帧精确搜索的解码器必须实现 AM_KSPROPSETID_FrameStep 属性集,该属性集与 IVideoFrameStep 接口一起使用。

我试图将它连接到我的图表,但IVideoFrameStep::CanStep()函数对我返回 false,这意味着我不能将它与 Sample Grabber 一起使用。

所以我的问题是:是否有一个简单且性能方面的好解决方案,这样我就可以让我的图表保持当前状态,然后向前推进一个帧并使用 Sample Grabber 获取数据?

0 投票
0 回答
186 浏览

h.264 - 无法让 DirectShow MPEG-2 解码器输出 YV12/NV12 渐进式

我正在尝试让 MPEG-2 解码器(又名 DTV-DVD 视频解码器)为我提供可以上传到 OpenGL 进行渲染的渐进式 YV12 或 NV12 帧。但是我所看到的渲染看起来像是某种形式的未压缩自适应运动交错,或者只是 B 或 P 帧,不能提供完整的图像。(在 OpenGL 中渲染 YV12/NV12 的代码可以很好地与其他来源一起使用,所以这不是问题。)

不是它应该看起来的样子;-)

一条重要线索:当电影开始时以及当它循环回到开头时,我看到了一个完美渲染的帧。这告诉我这是唯一一次获得完整的有效 YV12/NV12 数据帧。

可能的最短描述:

1) 创建了一个自定义 Sample Grabber(基于 CTransInPlaceFilter),以便我可以获得具有 VIDEOINFOHEADER2 的样本。这可以按预期工作,并且样本大小与我正在播放的分辨率下 YV12/NV12 的预期相符。(在此处滚动您自己的 Sample Graabber 的有用示例。)

2) 为确保我只获得渐进式帧,如果 VIDEOINFOHEADER2 的 dwInterlaceFlags 字段设置了 AMINTERLACE_IsInterlaced 标志,我的 Sample Grabber 的 CheckInputType() 方法将返回 E_FAIL。

3) 我正在使用带有 CODECAPI_AVDecVideoSoftwareDeinterlaceMode 的 ICodecAPI 接口在解码器上设置 eAVDecVideoSoftwareDeinterlaceMode_ProgressiveDeinterlacing 标志。(如果我不这样做,解码器将无法连接到我的采样采集器,因为它不接受隔行扫描帧。)

4)为了调试它,我使用 IMediaSample2 接口来获取 Sample Grabber 中传入媒体样本的属性。AM_SAMPLE2_PROPERTIES结构的 dwTypeSpecificFlags 成员告诉我帧是 AM_VIDEO_FLAG_INTERLEAVED_FRAME,我相信这表明我得到的是完整帧而不是单个字段。还为所有帧设置了 AM_VIDEO_FLAG_I_SAMPLE 位,表示我得到的是完整的“I”帧,而不是“B”或“P”帧。

5)鉴于所有帧都是“I”帧,我希望看到我的图像而不是如上所示的 gobbledygook。如上所述,当电影循环回到第一帧时,我唯一一次看到有效图像。

6) 最后一件事:我确实看到我的样本设置了 AM_VIDEO_FLAG_WEAVE。这是图像的“编织”问题吗?

谢谢,马克

0 投票
1 回答
46 浏览

javascript - 使用 PHP 如何获取 Javascript 对象值

它来自另一个网站的 javascript 代码 var images = { article_id : '1111', channel : '$11111', image_license : ' https://website.com/test ', name : 'numbers" }

使用php 如何获取图片_license的值(https://website.com/test

我的想法是我做了一个文章抓取器,它可以从 html 中获取标题、描述等,但我无法从 js 代码中获取这个值,那该怎么办呢?

0 投票
1 回答
70 浏览

windows - Directshow CLSID_AsyncReader:如何设置输出引脚样本大小?

我正在尝试从磁盘播放一个 wav 文件(44100sr 16bits 2 通道),我需要在 SampleGrabber 过滤器回调中处理音频数据,但它总是每秒接收四次 44100 字节数据,我想更改回调速率为每秒 10 次(音频样本大小:每次回调 17640 字节),而不是四次(每次 44100 字节),如何使其按预期工作?