我使用示例抓取器过滤器从视频文件(mov,h264)中提取帧的原始数据。我使用BufferCB回调选项来接收数据。示例抓取器在数据中过滤奇怪的垃圾线
对于我来说,一切都很顺利,除了对于一些文件,我在文件中出现了一条奇怪的线(几乎穿过对角线)。我试图调试数据,并注意到在每一行中,数据中有2个零应该是255,并且它们逐列地改变它们的列位置。
以下是图像:
这里是它的原始数据第一个8×5像素:
这种情况与文件中的所有帧。这只是第一帧,因此它是完全白色的。
但是,Windows Media Player不显示此行。
任何想法是什么会导致这种情况,有没有办法解决它?
什么是您的图像的分辨率?这可能是由于步长/间距,其中图像数据由于性能原因而被字节对齐,通常是4/8字节对齐。因此,如果你说8位RGB图像是一些奇数宽度,如178像素,那么做数学显示178 * 3 = 534,那么如果我们除以4 = 133.5,这意味着内存将有0.5 * 4字节= 2个字节的填充。 – EdChum
你的观点击中了目标。我检查了这个问题的例子。它们的尺寸不能被4整除。实际的数据长度等于H×W×3 + 2×H。因此每行有2个字节的填充。我试图找到一种方法来做正确的数据处理。 – mbaros
@EdChum,我试图通过巧妙的迭代消除这些额外的填充字节,但由于某种原因我失败了。我也需要反转数据,因为数据的第一个字节对应于图像的最后一行(顺便说一句,你知道为什么数据是颠倒过来的)。你知道什么才是解决这个问题的正确方法吗? – mbaros