Winapi 从IMFSourceReader到IMFSinkWriter的写入在2秒或3秒后停止

Winapi 从IMFSourceReader到IMFSinkWriter的写入在2秒或3秒后停止,winapi,visual-c++,ms-media-foundation,Winapi,Visual C++,Ms Media Foundation,我试图在异步模式下使用源代码读取器从网络摄像头源代码捕获到文件。它在几秒钟内运行良好,视频以30 fps的速度录制,但随后突然下降到0 我已尝试在SinkWriter中启用和禁用MF\u接收器\写入程序\禁用\节流。出于某种原因,它似乎阻止了输入。此外,OnReadSample方法停止调用 以下是OnReadSample方法: EnterCriticalSection(&m_critsec); if (SUCCEEDED(hrStatus)) { if (pSample)

我试图在异步模式下使用源代码读取器从网络摄像头源代码捕获到文件。它在几秒钟内运行良好,视频以30 fps的速度录制,但随后突然下降到0

我已尝试在SinkWriter中启用和禁用MF\u接收器\写入程序\禁用\节流。出于某种原因,它似乎阻止了输入。此外,OnReadSample方法停止调用

以下是OnReadSample方法:

EnterCriticalSection(&m_critsec);
if (SUCCEEDED(hrStatus))
{
    if (pSample)
    {
        if (audio)
        {
            WriteLogFile(L"audio: @ %I64d\n", llTimestamp);
        }
        else
        {
            WriteLogFile(L"video: @ %I64d\n", llTimestamp);
            if (SUCCEEDED(hrStatus))
            {
                    hrStatus = pSample->SetSampleTime(llTimestamp);
            }

            if (SUCCEEDED(hrStatus))
            {
                    hrStatus = pSample->SetSampleDuration(myVideoRecorder.CaptureParams.VIDEO_FRAME_DURATION);
            }

            // Send the sample to the Sink Writer.

            if (pWriter)
                if (SUCCEEDED(hrStatus))
                {

                    hrStatus = pWriter->WriteSample(streamIndex, pSample);
                }
        }
    }
编辑:
显然,我当时正在设置sink writer来接受音频和视频,但目前只提供视频样本。提供音频样本并修复它。

您最好提供。如有必要,提供调试信息以帮助人们发现问题。您应该检查在SetSampleTimeIt中提供的时间戳。问题已经解决,但谢谢。