gpt4 book ai didi

c++ - LibAV FFmpeg C++ av_find_input_format ("dshow") 返回 nullptr

转载 作者:行者123 更新时间:2023-12-04 22:54:19 24 4
gpt4 key购买 nike

我正在尝试在 C++ 程序中使用带有 FFmpeg 的 DirectShow 设备。我正在使用命令 .\vcpkg install ffmpeg[nvcodec]:x64-windows 使用 vcpkg 构建的 DLL。 . vcpkg 日志显示 Enabled indevs: dshowav_find_input_format 为我返回 nullptr(未找到“dshow”设备)。
如果我查询下载的 FFmpeg 可执行文件,我会得到一个包含 14 个“dshow”设备的列表。
如何让 FFmpeg 返回“dshow”设备列表?我是否需要使用 mingw-w64 手动构建 FFmpeg? ?

extern "C"
{
#include <libavformat/avformat.h>
#include <libavdevice/avdevice.h>
}

int main(int argc, char *argv[])
{
AVFormatContext* inFormatContext = avformat_alloc_context();
AVInputFormat* inFormat = av_find_input_format("dshow");

if (!inFormat || !inFormat->priv_class || !AV_IS_INPUT_DEVICE(inFormat->priv_class->category))
{
return false;
}

AVDeviceInfoList* deviceList;
int deviceCount = avdevice_list_input_sources(inFormat, nullptr, nullptr, &deviceList);

avdevice_free_list_devices(&deviceList);
avformat_free_context(inFormatContext);

return 0;
}

最佳答案

您必须调用 avdevice_register_all()之前 av_find_input_format("dshow") .
以下代码返回一个有效指针:

avdevice_register_all();

AVInputFormat* inFormat = av_find_input_format("dshow");

我对这个主题了解不多,但我猜 avdevice_register_all()展开可用格式列表。

关于c++ - LibAV FFmpeg C++ av_find_input_format ("dshow") 返回 nullptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69919338/

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