如何使用 ffmpeg API 指定 GPU?
Posted
技术标签:
【中文标题】如何使用 ffmpeg API 指定 GPU?【英文标题】:How can I specify a GPU using ffmpeg API? 【发布时间】:2021-10-12 23:45:53 【问题描述】:据我所知,它可以在命令行中使用-hwaccel_device
或-gpu
指定GPU 设备,但是如何在使用API 时指定GPU?
我试图在 ffmpeg.c 中找到它,而对于 c++ 和 ffmpeg 的新手来说这太复杂了。
我可以使用 AVDictionary 吗?什么是关键字?
如果有人能提供一些提示,将不胜感激!
【问题讨论】:
【参考方案1】:我终于通过阅读OpenCV的源代码解决了这个问题。 关键API是
int av_hwdevice_ctx_create(AVBufferRef **device_ctx, enum AVHWDeviceType type, const char *device, AVDictionary *opts, int flags)
.
OpenCV 的cap_ffmpeg_hw.hpp
中的源代码:
char device[128] = "";
char* pdevice = NULL;
if (hw_device >= 0 && hw_device < 100000)
if (child_type == AV_HWDEVICE_TYPE_VAAPI)
snprintf(device, sizeof(device), "/dev/dri/renderD%d", 128 + hw_device);
else
snprintf(device, sizeof(device), "%d", hw_device);
pdevice = device;
const char* hw_child_name = av_hwdevice_get_type_name(child_type);const char* device_name = pdevice ? pdevice : "'default'";
int err = av_hwdevice_ctx_create(&hw_device_ctx, child_type, pdevice, NULL, 0);
【讨论】:
以上是关于如何使用 ffmpeg API 指定 GPU?的主要内容,如果未能解决你的问题,请参考以下文章