如何使用ffmpeg API指定GPU?

问题描述 投票:0回答:2

据我所知,可以使用

-hwaccel_device
-gpu
在命令行中指定 GPU 设备,但是如何在使用 API 时指定 GPU?

我试图在 ffmpeg.c 中找到它,但这对于 c++ 和 ffmpeg 的新手来说太复杂了。

我可以使用 AVDictionary 吗?关键字是什么?

如果有人能给一些提示,我将不胜感激!

c ffmpeg gpu video-processing
2个回答
2
投票

通过阅读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);

0
投票

最好的学习方式是源代码:ffmpeg hw 解码示例

© www.soinside.com 2019 - 2024. All rights reserved.