相关疑难解决方法(0)

ffplay中出现绿屏:使用Live555通过RTP流将桌面(DirectX表面)作为H264视频流

我正在尝试使用Windows10上的Live555和Windows Media Foundation的硬件编码器通过RTP流将桌面(NV12格式的DirectX表面)流化为H264视频,并期望由ffplay(ffmpeg 4.2)渲染。但是只有如下所示的绿屏,

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

使用硬件MFT引用了MFWebCamToRTP mediafoundation-sampleEncoding DirectX表面,以实现live555的FramedSource并将输入源更改为DirectX表面而不是webCam。

这是我的Live555的doGetNextFrame回调实现的摘录,以从directX表面提供输入样本:

virtual void doGetNextFrame()
{
    if (!_isInitialised)
    {
        if (!initialise()) {
            printf("Video device initialisation failed, stopping.");
            return;
        }
        else {
            _isInitialised = true;
        }
    }

    //if (!isCurrentlyAwaitingData()) return;

    DWORD processOutputStatus = 0;
    HRESULT mftProcessOutput = S_OK;
    MFT_OUTPUT_STREAM_INFO StreamInfo;
    IMFMediaBuffer *pBuffer = NULL;
    IMFSample *mftOutSample = NULL;
    DWORD mftOutFlags;
    bool frameSent = false;
    bool bTimeout = false;

    // Create sample
    CComPtr<IMFSample> videoSample = NULL;

    // Create buffer
    CComPtr<IMFMediaBuffer> …
Run Code Online (Sandbox Code Playgroud)

directx ffmpeg video-streaming h.264 ms-media-foundation

9
推荐指数
1
解决办法
311
查看次数

DirectX中的整个屏幕捕获和渲染[性能]

我需要一些方法来获取屏幕数据并将其传递到我的应用程序中的DX9表面/纹理,并以1600*900分辨率以至少25fps渲染它,30会更好.

我尝试了BitBliting,但即使在那之后,我的速度为20fps,在将数据加载到纹理并渲染后,我的速度为11fps,远远落后于我的需要.

GetFrontBufferData是不可能的.

以下使用Windows Media API的内容,但我不熟悉它.示例将数据保存到文件中,也许它可以设置为给你单独的帧,但我没有找到足够好的文档来自己尝试.

我的代码:

m_memDC.BitBlt(0, 0, m_Rect.Width(),m_Rect.Height(), //m_Rect is area to be captured
               &m_dc, m_Rect.left, m_Rect.top, SRCCOPY); 
      //at 20-25fps after this if I comment out the rest

//DC,HBITMAP setup and memory alloc is done once at the begining
GetDIBits( m_hDc, (HBITMAP)m_hBmp.GetSafeHandle(),
    0L,             // Start scan line
    (DWORD)m_Rect.Height(),     // # of scan lines
    m_lpData,                   // LPBYTE
    (LPBITMAPINFO)m_bi,     // address of bitmapinfo
    (DWORD)DIB_RGB_COLORS);     // Use RGB for color table
     //at 17-20fps

IDirect3DSurface9 …
Run Code Online (Sandbox Code Playgroud)

c++ directx winapi ms-media-foundation

5
推荐指数
2
解决办法
4752
查看次数