我需要访问视频文件的元数据以获得其持续时间。为了做到这一点,我使用了windows自己的库,但是每当y试图在任何文件上获得读/写权限时,我都会被拒绝访问。
这是我的函数:
unsigned int getEpisodeLenght(string file)
{
CoInitialize(NULL);
HRESULT hr = S_OK;
IPropertyStore* store = NULL;
wstring temp_ = wstring(file.begin(), file.end());
PCWSTR file_ = temp_.c_str();
hr = SHGetPropertyStoreFromParsingName(file_, NULL, GPS_READWRITE, __uuidof(IPropertyStore), (void**)&store);
if (hr == S_OK) {
PROPVARIANT variant;
hr = store->GetValue(PKEY_Media_Duration, &variant);
double seconds = (double)(variant.ulVal / 10000000);
printf("Seconds: %f\n", seconds);
store->Release();
return seconds;
}
else
printf("Premision denied: cant read properties\n");
return 0;
}
如果我换了GPS_读到另一种模式,如“默认”,它提供一个与视频的实际持续时间无关的值。
发布于 2018-07-17 19:01:11
你需要进行更多调试才能找到问题的根源:
首先进行更多调试后发布更多。
https://stackoverflow.com/questions/-100005590
复制相似问题