读书人

修改Directshow例子“PushSourcequot;后出

发布时间: 2012-09-16 17:33:16 作者: rapoo

修改Directshow例子“PushSource"后出现的问题
PushSource是SDK中一个Source Filter的例子,里面以FPS_5的帧率抓取桌面的截图,然后配合Avi Mux Filter和File Writer Filter保存成AVI文件,默认情况下是全屏,而且保存之后的文件也正常,情况是:
我修改Source Filter,并且改变了截屏的区域,比如大小定义为400*300,之后再保存AVI文件的时候,文件的时间轴就会出问题,若程序运行了10S,则生成的AVI在一分半钟左右,请问还需要修改哪些东西才能让时间正常?

FillBuffer函数里面时间戳是这样写的:

C/C++ code
REFERENCE_TIME rtStart = m_iFrameNumber * m_rtFrameLength;    REFERENCE_TIME rtStop  = rtStart + m_rtFrameLength;        pSample->SetTime(&rtStart, &rtStop);    m_iFrameNumber++;    // Set TRUE on every sample for uncompressed frames    pSample->SetSyncPoint(TRUE);

其中,m_rtFrameLength等于(10 ^ 7)/5, 这都是没有改动过的。

[解决办法]
如果仅改变大小应该不会影响输出的侦率。

你是否包括了audio?

你是如何修改大小的?

读书人网 >多媒体

热点推荐