我在 Visual C++ 中工作,通常我在 .NET 上进行,因为我需要一种仅在这种语言上可用的方法。我想要做的是获取视频文件的每秒帧数。我能做的最好的事情是使用这个 main() 方法创建一个项目,其中(在 Debug 之后)我可以看到结果很好地保存在 res 变量中。
void main()
{
// initialize the COM library
CoInitialize(NULL);
// get a property store for the video file
IPropertyStore* store = NULL;
SHGetPropertyStoreFromParsingName(L"C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv",
NULL, GPS_READWRITE, __uuidof(IPropertyStore), (void**)&store);
// get the frame rate
PROPVARIANT variant;
store->GetValue(PKEY_Video_FrameRate, &variant);
int res = variant.intVal;
store->Release();
}
现在,我想创建这个通用方法,以获得任何视频的帧率。例如,如果方法的名称是 frameRate:
char* path = "C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv";
int fps = frameRate(path);
谢谢