我写了一个MJPEG压缩器的DirectShow滤波器,它的工作没有问题的彩色图像。但是当我尝试支持8位灰度图像时,我无法将我的过滤器连接到Microsoft AVI多路复用器过滤器。它在ReceiveConnection中总是会失败。我基本上复制了输入图像的BITMAPINFOHEADER,并将biCompression更改为MJPG并减少biSizeImage。
微软的AVI复用器对它的分配器有什么要求吗?我使用输出BITMAPINFOHEADER的大小,目前不关心前缀或对齐方式。
biSize 1064 biWidth 640 biHeight -480 biPlanes 1 biBitCount 8 biCompression 1196444237 biSizeImage 184320 biXPelsPerMeter 0 biYPelsPerMeter 0 biClrUsed 0 biClrImportant 0
将高度更改为正值不会产生任何影响。由于我们使用了头部,所以biSize比正常情况下要大,所以要为编码保存额外的信息。在彩色模式下,我们有相同的BITMAPINFOHEADER,除了biBitCount beeing 24。
发布于 2018-02-19 18:58:32
AVI Mux筛选器正在拒绝格式错误的媒体类型。尽管这不是唯一可能的原因,但在这种情况下,它看起来最有可能(这个问题确实缺乏细节)。
要找出有效的样本媒体类型,应该构建一个过滤器图,该图可以呈现为有效的可播放MJPG AVI文件,例如在GraphStudioNext的帮助下,并仔细检查媒体类型字段。

原始问题附带的一些数据表明,至少biSize和biHeight需要修复。
https://stackoverflow.com/questions/48807520
复制相似问题