小编Ton*_*nen的帖子

Media Foundation网络摄像头视频H264编码/解码在播放时会产生伪影

我有一个解决方案,我使用Media Foundation的h264编码器从网络摄像头编码视频(YUY2)样本.然后我通过TCP连接将其发送到另一个应用程序,该应用程序使用Media Foundation的h264解码器将流解码为YUY2格式.解码后,使用DirectX在屏幕上显示视频样本/图像.

问题是在关键帧之间,视频图像会产生越来越多的伪像.收到关键帧时,伪像消失.

我将TCP连接从示波器中删除,并在编码后立即进行解码,但我仍然有困扰我的工件.

这是从网络摄像头接收样本的回调方法:

//-------------------------------------------------------------------
// OnReadSample
//
// Called when the IMFMediaSource::ReadSample method completes.
//-------------------------------------------------------------------

HRESULT CPreview::OnReadSample(
    HRESULT hrStatus,
    DWORD /* dwStreamIndex */,
    DWORD dwStreamFlags,
    LONGLONG llTimestamp,
    IMFSample *pSample      // Can be NULL
    )
{
    HRESULT hr = S_OK;
    IMFMediaBuffer *pBuffer = NULL;

    EnterCriticalSection(&m_critsec);

    if (FAILED(hrStatus))
    {
        hr = hrStatus;
    }

    if (SUCCEEDED(hr))
    {
        if (pSample)
        {
            IMFSample *pEncodedSample = NULL;
            hr = m_pCodec->EncodeSample(pSample, &pEncodedSample);
            if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT || pEncodedSample == NULL)
            {
                hr = m_pReader->ReadSample((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, …
Run Code Online (Sandbox Code Playgroud)

c++ artifacts h.264 ms-media-foundation

7
推荐指数
1
解决办法
1726
查看次数

标签 统计

artifacts ×1

c++ ×1

h.264 ×1

ms-media-foundation ×1