设置IWMWriter来编写4K视频

Set up IWMWriter to wirte 4K video

本文关键字:4K 视频 IWMWriter 设置      更新时间:2023-10-16

这个问题是关于使用Window Media API输出4K WMV视频(尽管理论上WMV不支持4K输出)

在32位和64位Win10上调用IWMWriter->BeginWriting()后(在两个系统上BeginWriting()都返回S_OK),程序占用大约450MB内存。

之后,我开始使用IWMWriter->AllocateSample()来分配样本缓冲区,并使用IWMWriter->WriteSample()将其写入sink。

在64位Win10上,转换可以优雅地完成,但在32位Win10上,WriteSample()在写入几帧后失败并出现"out of memory"错误。

我在2个系统上看到的唯一区别是:在调用BeginWriting()之前,64Win10占用110 MB内存,因此在调用BeginWriting()之后,使用110+450。在32位Win10上,在BeginWriting()之前使用150mb,因此在此之后使用150+450。

转换失败的峰值工作集只有761MB,有人知道为什么在这种情况下WriteSample()返回内存不足。有什么解决办法吗?

= =更新 : =============================================

源视频同时包含视频和音频,在失败的情况下,程序写入视频和音频,而写入视频失败。

如果我把音轨从文件中取出,所以它只包含视频,那么转换可以优雅地完成。峰值工作集为716MB

这是关于视频编码器的内存要求:在这个分辨率下,应用程序不适合32位应用程序的标准2gb地址空间。您可能需要与/LARGEADDRESSAWARE链接以绕过内存不足的情况。