#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);