如何将本地路径设置为Media Engine URL?

时间:2018-02-07 20:55:29

标签: c# winapi uwp mft

我想使用下面的代码来设置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;
        }

1 个答案:

答案 0 :(得分:1)

UWP应用程序以沙盒形式运行,并且对文件系统的访问权限非常有限。在大多数情况下,他们只能直接访问他们的安装文件夹和他们的应用程序数据文件夹。因此,您无法直接将本地路径用作媒体引擎URL。

作为Rob的博客:Skip the path: stick to the StorageFile,您可以选择Files or folders picker来获取文件和文件夹。然后,IRandomAccessStream可以read this StorageFile