我想知道是否有可能在没有Windows Media Player 10或11的情况下部署Windows Media Foundation?
这是上下文.我有一个在企业企业环境中运行的WPF应用程序.WPF要求Windows Media Foundation支持富媒体.Windows Media Foundation通过Windows媒体播放器10和11进行分发.WMP 10/11的企业发布时间表在未来太遥远,让我等待.但是因为我不需要整个播放器基础设施,只需要媒体基础,我想知道是否有办法只部署该组件.
我正在使用Media Foundation处理媒体播放器.我想支持VOB文件播放.但是,媒体基金会目前不支持VOB容器.因此我希望使用DirectShow.
我的想法是不使用DirectsShow图形来获取备用路径,而是抓住视频帧并将其传递到媒体基础中的相同管道.在媒体基础上,我有一个'IMFSourceReader',它只是从视频文件中读取帧.是否有一个直接显示等效,只是给我框架而不需要创建图形,开始播放周期,然后尝试从渲染引脚中提取帧?(更清楚的是,DirectsShow是否支持一种架构,它可以在不实际播放视频的情况下为我提供原始帧?)
我已经阅读了有关ISampleGrabber的内容,但它被弃用了,我认为它不适合我的架构.我以前没有在DirectShow上工作过.
谢谢,Mots
我已经在使用Media Foundation API(感谢MFManagedEncode,http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx)将wav转换为aac.我还没有完全了解它是如何工作的,但它确实有效 - 谢天谢地.
现在我发现很难以其他方式转码,即使它有一个MF编解码器(AAC解码器).我找不到如何使用它的例子,我发现它的MSDN文档至少可以说是含糊不清的; 谁有运气呢?
AC#wrapper for是理想的.
TIA.
我使用Microsoft Media Foundation示例(即MFCaptureToFile)从我的网络摄像头捕获H264帧并将其写入文件.
我正在尝试使用IMFTransform解码捕获的帧并获取下划线图像(YUV,BMP,等等).
但是,ProcessInput方法永远不会返回MF_E_NOTACCEPTING,并且ProcessOutput方法始终返回MF_E_TRANSFORM_NEED_MORE_INPUT.
我基本上读取每一帧并调用ProcessInput.
有任何想法吗?有人可以修改MFCaptureToFile示例来告诉我它是如何完成的吗?我在CCapture :: OnReadSample下进行所有处理.
任何帮助将不胜感激!
我做
GraphEdit仅适用于DirectShow,而不适用于使用MediaFoundation构建的拓扑.
是否有与MediaFoundation的GraphEdit类似的工具?
我正在使用 H.264 编码器流式传输我的内容,并希望使用 H.264 解码器对内容进行解码。编码拓扑就像
源 --> H.264 编码器 --> NetDump
和解码拓扑就像
NetSource --> H.264 解码器 --> EVR
我们能够制作我们的解码拓扑,但输出视频会产生大约 1 秒以上的延迟。请针对该延迟提出一些解决方案。任何帮助将不胜感激
我正在尝试创建一个Media Foundation Transform,它使用D2D和D3D11在视频上绘制文本.我试图在D3D11资源之上构建一个D2D RenderTarget,但不幸的是,大多数D2D和D3D互操作方法需要D3D10,这在这个项目中是不可用的.
我必须使用的参数如下:ID3D11Device*pDevice,ID3D11Texture2D*pInput,UINT uiInIndex,ID3D11Texture2D*pOutput和UINT uiOutIndex.
我试图遵循本教程的建议,但事实证明它需要一个ID3D10Texture2D对象,这对我来说也不是一个选择.
我正在 Visual Studio 2013 中编写一个简单的多媒体应用程序,我需要枚举连接到我的计算机的相机设备并创建一个媒体源对象以链接到其中之一。我使用 Media Foundation SDK 并尝试在此处运行指南:https://msdn.microsoft.com/en-us/library/windows/desktop/dd940326(v =vs.85) .aspx :
#include <Mfapi.h>
#include <mfidl.h>
#include <mfobjects.h>
#include <iostream>
#pragma comment(lib, "Mfplat")
#pragma comment(lib, "Mf")
template <class T> void SafeRelease(T **ppT) {
if (*ppT) {
(*ppT)->Release();
*ppT = NULL;
}
}
HRESULT CreateVideoDeviceSource(IMFMediaSource **ppSource) {
*ppSource = NULL;
IMFMediaSource *pSource = NULL;
IMFAttributes *pAttributes = NULL;
IMFActivate **ppDevices = NULL;
// Create an attribute store to specify the enumeration parameters.
HRESULT hr = MFCreateAttributes(&pAttributes, 1);
if (FAILED(hr))
{ …Run Code Online (Sandbox Code Playgroud) 我需要剪切一部分视频片段,这可能是由ffmpeg但不想使用ffmpeg并且想要在asp.net中严格使用Media Foundation方法.任何人都可以建议我怎么可能.要求是想要将实时流从结束位置切换到4分钟后再保存在视频文件中.我们必须从实时流中剪切视频,而不是已经保存的视频.
我将MediaFoundation与 SharpDX一起使用,以便对来自桌面重复帧的视频文件进行编码。
我正在创建纹理并捕获屏幕。然后将此纹理传递给MFCreateVideoSampleFromSurface,调用一次。
/* creating the texture */
new Texture2D(/* device */,
new Texture2DDescription {
CpuAccessFlags = CpuAccessFlags.Read,
BindFlags = BindFlags.None,
Format = Format.B8G8R8A8_UNorm,
Width = /* width */,
Height = /* height */,
OptionFlags = ResourceOptionFlags.None,
MipLevels = 1,
ArraySize = 1,
SampleDescription = { Count = 1, Quality = 0 },
Usage = ResourceUsage.Staging
})
/* creating the sample */
Evr.CreateVideoSampleFromSurface(SourceTexture, out /* the sample */);
Run Code Online (Sandbox Code Playgroud)
初始化样本和纹理后,我正在调用IDXGIOutputDuplication::AcquireFrame() …