mft

    2热度

    2回答

    我正在一个项目捕获屏幕和编码它。我已经可以使用桌面复制API(Win8 +)捕获屏幕。使用API​​我可以获得ID3D11Texture2D纹理,并将它们从GPU传输到CPU,然后使用libx264对它们进行编码。 但是,将纹理从GPU拉到CPU可能是瓶颈,可能会降低fps。此外,libx264会占用CPU周期(取决于质量)来对帧进行编码。我正在寻找在GPU本身编码ID3D11Texture2D纹

    1热度

    1回答

    问题 我正在写有两个输入和一个输出(它结合了两个视频流为一体)的自定义MFT。 我的MFT要求在其输入之前设置媒体类型,然后才能提供输出类型。 我已经通过连接两个源节点(它们将来自聚合媒体源的不同流)连接到我的变换节点,然后将EVR连接到我的单个输出来设置我的拓扑。 当我开始媒体会话时,我看到拓扑在第一个输入上调用了SetInputType,并且成功。 但随后立即尝试得到一个输出型:通过调用Get

    1热度

    1回答

    我想使用“英特尔®快速同步视频H.264编码器MFT”对视频进行编码。 如果我从系统缓冲区创建IMFSample,它运行良好。就像下面: IMFMediaBuffer *pBuffer = NULL; MFCreateMemoryBuffer(cbSize, &pBuffer); BYTE *pData = NULL; pBuffer->Lock(&pData, NULL, NULL);

    0热度

    2回答

    在windows media foundation中可以使用Video capture捕获桌面屏幕。 阅读Windows开发人员指南后,它似乎用于从设备(如相机或其他外部设备)捕捉视频。 如果是,它是硬件加速API还是软件基础?

    0热度

    1回答

    我正在学习在Windows Media Foundation中使用H.264编码器。 我目前拥有的是YUV420p格式的媒体样本,所以这是包含YYYYYYYYUUVV数据的缓冲区。 由于H.264编码器MFT需要IMFSample形式的输入,所以我不确定如何将缓冲区中的数据转换为IMFSample。 可能我就是这样做: IMFMediaBuffer *pBuffer = NULL; MFCrea

    2热度

    1回答

    我正在开发使用MediaFoundation SourceReader技术的USB摄像头流式桌面应用程序。该相机具有USB3.0支持,并可提供60fps的1080p MJPG视频格式分辨率。 我使用的软件解码器MJPEG MFT到MJPG转换为YUY2帧,然后转换成RGB32帧来绘制窗口上。在使用这个软件解码器时,我能够在窗口上只渲染30fps,而不是60fps。我在这个网站上发布了一个问题,并得

    -1热度

    1回答

    我有工作解决方案从C++中的视频中提取帧github。问题是它非常缓慢。我正在做的是我正在使用定时器和播放视频,每当帧准备就绪时,我将它转换为位图并保存并寻找下一个位置。我认为这不是正确的做法,必须有另一种拉出框架的方式。请通过Github项目并建议任何更改。 以下是我的定时器功能 if (m_spMediaEngine != nullptr) { LONGLONG pts;

    1热度

    1回答

    我试图在MFT中使用WMA8编码器来编码音频数据。整个音频持续时间为10秒,ProcessInput和ProcessOut都可以正常/成功运行。编码音频数据的时间戳也是正确的。问题是,编码后的音频写入文件后(使用自己的复用器)似乎不正确。 有一件事我注意到,从输出mftrace,输出类型似乎有一个奇怪的对齐和每秒字节数。以下是编码器设置代码和mftrace的输出。 CLSID* pCLSIDs =

    1热度

    1回答

    链接Walkthrough: Creating a Windows Store app using WRL and Media Foundation 提供了自定义MFT创建并将其用作可激活类的示例。里面的C#代码的MFT使用激活类ID字符串这样 mediaCapture.AddEffectAsync(MediaStreamType.Photo, "GrayscaleTransform.Graysc

    2热度

    1回答

    要与Windows Media基础解码H264流变换,工作流程是目前这样的: IMFSample sample; sample->SetTime(time_in_ns); sample->SetDuration(duration_in_ns); sample->AddBuffer(buffer); // Feed IMFSample to decoder mDecoder->Proce