gpt4 book ai didi

visual-c++ - 如何使用 Visual C++ 读取媒体文件的信息?

转载 作者:行者123 更新时间:2023-11-28 21:41:27 27 4
gpt4 key购买 nike

有没有办法使用 Visual Studio C++ 在 Windows 上读取媒体文件(avi、mp4、mkv 等)的信息(fps、比特率、持续时间、所需的编解码器等)?

我设法使用 directshow ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd389098%28v=vs.85%29.aspx ) 播放了各种文件(实际上我什至不想要),但我不知道如何只从文件中获取信息。

编辑:我让它像这样工作......

int             height, width, framerate, bitrate;
LARGE_INTEGER duration;

// initialize the COM library
CoInitialize(NULL);

//
IPropertyStore* store = NULL;
SHGetPropertyStoreFromParsingName(L"E:\\test.avi", NULL, GPS_DEFAULT, __uuidof(IPropertyStore), (void**)&store);

PROPVARIANT variant;

store->GetValue(PKEY_Media_Duration, &variant);
duration = variant.hVal;
store->GetValue(PKEY_Video_FrameHeight, &variant);
height = variant.lVal;
store->GetValue(PKEY_Video_FrameWidth, &variant);
width = variant.lVal;
store->GetValue(PKEY_Video_FrameRate, &variant);
framerate = variant.lVal;
store->GetValue(PKEY_Video_TotalBitrate, &variant);
bitrate = variant.lVal;
//
store->Release();
//
CoUninitialize();

最佳答案

您可以通过 DirectShow 获取此信息,但是如果您不需要回放/流式传输管道并且您使用的是 Windows 7,那么您可能有更好的替代选项从 shell 属性获取数据 - 那些提供数据给显示在 Windows 资源管理器的附加列中。

关于visual-c++ - 如何使用 Visual C++ 读取媒体文件的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com