这个问题是关于使用 Window Media API 输出 4K WMV 视频(虽然理论上 WMV 不支持输出到 4K)
在 32 位和 64 位 Win10 上调用 IWMWriter->BeginWriting() 后(在两个系统上 BeginWriting() 都返回 S_OK),程序占用大约 450MB 内存。
之后,我开始使用 IWMWriter->AllocateSample() 分配样本缓冲区并使用 IWMWriter->WriteSample() 将其写入接收器。
在 64 位 Win10 上,转换可以正常完成,但在 32 位 Win10 上,写入几帧后,WriteSample() 失败并出现“内存不足”错误。
我在 2 个系统上看到的唯一区别是:在调用 BeginWriting() 之前,64Win10 占用 110 MB 内存,因此在调用 BeginWriting() 之后,使用 110+450。在 32 位 Win10 上,在 BeginWriting() 之前使用 150 MB,因此之后使用 150+450。
转换失败的峰值工作集只有 761MB,任何人都知道为什么在这种情况下 WriteSample() 返回内存不足。有什么解决方法吗?
==更新:=============================================
源视频同时包含视频和音频,在失败的情况下,程序同时写入视频和音频并且无法写入视频。
如果我从文件中取出音轨,使其仅包含视频,则转换可以正常完成。峰值工作集为 716MB。