gpt4 book ai didi

c++ - 闪存 ActiveX : How to Load Movie from memory or resource or stream?

转载 作者:行者123 更新时间:2023-11-30 03:12:44 25 4
gpt4 key购买 nike

我在我的 C++ 应用程序中嵌入了一个 Flash ActiveX 控件(Flash.ocx、Flash10a.ocx 等,具体取决于您的 Flash 版本)。

我可以通过调用 LoadMovie(0, filename) 加载 SWF 文件,但该文件需要物理驻留在磁盘中。如何从内存(或资源或流)加载 SWF?我敢肯定一定有办法,因为像 f-in-box 的功能 Load flash movies from memory directly 这样的商业解决方案还使用了 Flash ActiveX 控件。

最佳答案

显然,我需要提供“赞成”投票的详细信息。好的。

内部闪存缓冲区在首次初始化时会指示是否加载了电影,或者缓冲区中的属性是否包含第一个四个字节。

gUfU -- 没有加载电影。要遵循的属性....

fUfU -- .. [4bytes] 大小为整数。

然后是未压缩的电影或 SWF。编写一个 IStream 类。填写以上。另存为 szFile

TFlashStream *fStream = new TFlashStream(szFile);// QI flash player

IPersistStreamInit * psStreamInit = 0;
shock->QueryInterface(::IID_IPersistStreamInit,
(LPVOID*)&psStreamInit);
if(psStreamInit)
{
psStreamInit->InitNew();
psStreamInit->Load(fStream);
psStreamInit->Release();
}
delete fStream;

注意事项:当psStreamInit->Load(fStream);将调用 IStream::Read 寻找 header “fUfU”。

如果返回是正确的 psStreamInit 然后调用 IStream::Read 缓冲区大小。

如果到目前为止一切看起来都不错,psStreamInit 然后读取 1024 字节 block ,直到读取耗尽。然而。标题和文件大小。

STDMETHOD(Read)(void *pv, ULONG cb, ULONG *pcbRead)

pcbRead 无效。你可能想使用类似的东西IsBadReadPtr

--

迈克尔

关于c++ - 闪存 ActiveX : How to Load Movie from memory or resource or stream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423166/

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