我想使用下面的代码来设置MFMediaEngine Source网址。下面的方法是从磁盘读取,并将其转换为IMByteStream。现在我想知道如何在Visual Win32(c ++代码)项目中实现以下代码。可能吗 ?如果是这样,请提供一些方法或提示。注意:下面的代码是从通用Windows平台获取的示例代码。
using namespace Windows::Storage;
#include <Mfmediaengine.h>
#include <wrl.h>
Microsoft::WRL::ComPtr<IMFMediaEngine> m_mediaEngine;
Microsoft::WRL::ComPtr<IMFMediaEngineEx> m_mediaEngineEx;
void CPlayer::SetBytestream(IRandomAccessStream^ streamHandle)
{
HRESULT hr = S_OK;
ComPtr<IMFByteStream> spMFByteStream = nullptr;
MEDIA::ThrowIfFailed(
MFCreateMFByteStreamOnStreamEx((IUnknown*)streamHandle, &spMFByteStream)
);
MEDIA::ThrowIfFailed(
m_mediaEngineEx->SetSourceFromByteStream(spMFByteStream.Get(), m_bstrURL)
);
return;
}
答案 0 :(得分:1)
UWP应用程序以沙盒形式运行,并且对文件系统的访问权限非常有限。在大多数情况下,他们只能直接访问他们的安装文件夹和他们的应用程序数据文件夹。因此,您无法直接将本地路径用作媒体引擎URL。
作为Rob的博客:Skip the path: stick to the StorageFile,您可以选择Files or folders picker来获取文件和文件夹。然后,IRandomAccessStream
可以read this StorageFile。