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

How to set the local path into Media Engine URL?

我想使用下面的代码来设置 MFMediaEngine Source URL。下面的方法是从磁盘读取,并将其转换为 IMByteStream。现在我想知道如何在 Visual Win32(c++ 代码)项目中实现以下代码。可能吗 ?如果是这样,请提供一些方法或提示。注意:下面的代码是从 Universal 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;
        }

UWP 应用程序 运行 沙盒化并且对文件系统的访问权限非常有限。大多数情况下,他们只能直接访问安装文件夹和应用程序数据文件夹。所以你不能直接使用本地路径作为媒体引擎 URL.

作为 Rob 的博客:Skip the path: stick to the StorageFile, you could choose the Files or folders picker to get files and folders. Then, you could read this StorageFileIRandomAccessStream