Dahua NetSDK Ошибка 25: NET_NO_RECORD_FOUND — Записи не найдены
Сбои при поиске или воспроизведении архивного видео:
- Функции
CLIENT_QueryRecordFileилиCLIENT_FindFileвозвращают0найденных файлов с ошибкой25. - Воспроизведение по времени (PlayBackByTime) не стартует, хотя в локальном интерфейсе NVR архив отображается.
- Синхронный поиск по нескольким каналам возвращает пустой список.
Код NET_NO_RECORD_FOUND (25) сообщает, что за указанный временной интервал на выбранном канале NVR/IPC отсутствуют видеозаписи, соответствующие заданному типу потока или фильтру событий.
1. Проверка временных зон и формата времени (Timezone / UTC / DST)
Самая распространенная ошибка — расхождение локального времени ПК и времени регистратора. NetSDK ожидает время в формате структуры NET_TIME без учета локального смещения ПК, если не включен UTC-режим:
NET_TIME stStart = {0};
stStart.dwYear = 2025;
stStart.dwMonth = 5;
stStart.dwDay = 20;
stStart.dwHour = 0;
stStart.dwMinute = 0;
stStart.dwSecond = 0;
NET_TIME stEnd = stStart;
stEnd.dwHour = 23;
stEnd.dwMinute = 59;
stEnd.dwSecond = 59;
int nMaxCount = 500;
int nFindCount = 0;
NET_RECORDFILE_INFO fileList[500];
BOOL bRet = CLIENT_QueryRecordFile(
lLoginID,
nChannelId,
RECORD_FILE_TYPE_ALL, // Тип: Все записи (по расписанию + тревожные)
&stStart,
&stEnd,
NULL,
fileList,
sizeof(fileList),
&nFindCount,
5000,
FALSE
);
if (!bRet || nFindCount == 0) {
DWORD dwErr = CLIENT_GetLastError(); // Код 25
}2. Фильтрация по типам записи (Record Types)
- Если постоянная запись отключена, а ведется запись только по детекции движения (MD) или аналитике (IVS), поиск с фильтром
RECORD_FILE_TYPE_REGULAR(обычная запись) вернет ошибку 25. ИспользуйтеRECORD_FILE_TYPE_ALL(значение0) илиRECORD_FILE_TYPE_MOTION. - Проверьте, какой поток архивировался: Основной (Main) или Дополнительный (Sub).
3. Проверка индексации жестких дисков NVR
Если на NVR производилась замена HDD или сбой питания, файловая система DHFS может требовать переиндексации. Проверьте статус дисков через CLIENT_QueryStorageState.
Частые вопросы (FAQ)
Почему через SmartPSS видео есть, а SDK возвращает 25?
SmartPSS использует интеллектуальный запрос по таймлайну (QueryRecordTime), запрашивающий минутные срезы занятости, а не прямой список файлов.
Как нумеруются каналы при поиске архива?
В большинстве функций Dahua каналы нумеруются с 0 (Channel 0 = 1-й физический вход NVR).
Влияет ли переход на летнее время (DST) на поиск записей?
Да, при активном DST временной сдвиг в 1 час может приводить к запросу интервала, в котором физически еще нет записей.
Какой API использовать вместо устаревшего CLIENT_QueryRecordFile?
Рекомендуется использовать новый асинхронный интерфейс поиска: CLIENT_FindFileEx + CLIENT_FindNextFileEx.