首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从C+中的视频文件中获取元数据?

如何从C+中的视频文件中获取元数据?
EN

Stack Overflow用户
提问于 2018-07-17 09:36:31
回答 1查看 0关注 0票数 0

我需要访问视频文件的元数据以获得其持续时间。为了做到这一点,我使用了windows自己的库,但是每当y试图在任何文件上获得读/写权限时,我都会被拒绝访问。

这是我的函数:

代码语言:txt
复制
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_读到另一种模式,如“默认”,它提供一个与视频的实际持续时间无关的值。

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 19:01:11

你需要进行更多调试才能找到问题的根源:

  • SHGetPropertyStoreFromParsingName()返回的HRESULT错误代码究竟是什么?
  • 阅读该功能的文档在这里,仔细考虑每个函数参数。你是否向每个人传递了适当的论据?
  • 它真的是一个“许可被拒绝”的问题吗?那是硬编码的。这不是函数本身抛出的错误。

首先进行更多调试后发布更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档