Как я могу указать графический процессор с помощью API ffmpeg?

#c #ffmpeg #gpu #video-processing

Вопрос:

Как я знаю, он может использовать -hwaccel_device или -gpu указывать устройство GPU в командной строке, но как я могу указать графический процессор при использовании API?

Я попытался выяснить это в 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) .

Исходный код в cap_ffmpeg_hw.hpp OpenCV :

 char device[128] = "";
char* pdevice = NULL;
if (hw_device >= 0 amp;amp; 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(amp;hw_device_ctx, child_type, pdevice, NULL, 0);