gpt4 book ai didi

c++ - 即时生成数据供媒体基金会使用

转载 作者:可可西里 更新时间:2023-11-01 10:48:47 24 4
gpt4 key购买 nike

我正在尝试通过使用内存中流作为源流将动态生成的数据提供给媒体基础源阅读器:

 InMemoryRandomAccessStream^ memstream = ref new InMemoryRandomAccessStream();
IRandomAccessStream^ pInputStream = (IRandomAccessStream^)memstream;
ComPtr<IMFByteStream> pInputByteStream;
MFCreateMFByteStreamOnStreamEx((IUnknown*)pInputStream, &pInputByteStream);
hr = MFCreateSourceReaderFromByteStream(pInputByteStream.Get(), NULL, &m_pSourceReader);
// last line FAILS, “The handle is invalid.”

但是,我被上面的错误卡住了。为什么这无效,我该如何更正它?或者,是否有更好的方法来创建具有动态数据的媒体基础管道?

最佳答案

这曾经对我有用:

void MyClass::Init(Windows::Storage::Streams::IRandomAccessStream^ stream)
{
ComPtr<IUnknown> pStreamUnk = reinterpret_cast<IUnknown*>(stream);
ComPtr<IMFByteStream> pMFStream;
hr = ::MFCreateMFByteStreamOnStreamEx(pStreamUnk.Get(), &pMFStream);

hr = ::MFCreateSourceReaderFromByteStream(pMFStream.Get(), NULL, &m_pSourceReader);
}

但这是针对文件流的。对于您的情况,您的内存流可能没有管道所需的所有数据。

更好的解决方案是实现媒体源。看看https://msdn.microsoft.com/en-us/library/windows/desktop/aa371827(v=vs.85).aspx (GeometricSource & Mpeg1Source)

关于c++ - 即时生成数据供媒体基金会使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13096938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com