Dahua NetSDK Ошибка 18: NET_REAL_ALREADY_SAVING — Повторный запуск сохранения
Проблемы при записи локального архива с потока Realplay:
- Функция
CLIENT_SaveRealDataвозвращаетFALSE, аCLIENT_GetLastError()возвращает код18. - Повторный запрос на сохранение одного и того же живого потока в файл вызывает сбой бизнес-логики.
- Невозможность ротации файлов записи (роликов по 15/30 минут).
Ошибка NET_REAL_ALREADY_SAVING (18) генерируется, если для активного дескриптора живого видеопотока (lRealHandle) уже был вызван метод сохранения данных CLIENT_SaveRealData, и запись в файл не была предварительно остановлена.
1. Корректный алгоритм ротации файлов записи
Для регулярной нарезки архива на фрагменты обязательно останавливайте предыдущую запись перед стартом новой:
// 1. Проверяем флаг состояния записи
if (bIsSaving) {
CLIENT_StopSaveRealData(lRealHandle);
bIsSaving = FALSE;
}
// 2. Инициируем сохранение в новый файл
char szFileName[256] = "C:\\Recordings\\cam01_part2.dav";
if (CLIENT_SaveRealData(lRealHandle, szFileName)) {
bIsSaving = TRUE;
} else {
DWORD dwErr = CLIENT_GetLastError(); // Анализ ошибки
}2. Проверка многопоточной синхронизации
Если запросы на запись вызываются по триггерам событий (например, детекция движения СКУД или датчик двери), используйте мьютексы (std::mutex), чтобы исключить параллельные вызовы CLIENT_SaveRealData для одного и того же хэндла потока.
Частые вопросы (FAQ)
Можно ли параллельно сохранять поток в два разных файла через CLIENT_SaveRealData?
Нет, один lRealHandle поддерживает только один активный выходной файл. Для записи в несколько мест используйте коллбэк CLIENT_SetRealDataCallBack и сохраняйте буферы вручную.
Какой формат файлов создает CLIENT_SaveRealData?
Создается нативный бинарный контейнер Dahua DAV (содержащий сырые H.264/H.265/AAC потоки с таймстемпами).
Повредится ли файл, если вызвать CLIENT_StopRealPlay без предварительного CLIENT_StopSaveRealData?
Да, файл может остаться незакрытым (missing file footer). Всегда вызывайте CLIENT_StopSaveRealData перед закрытием самого Realplay канала.
Влияет ли ошибка 18 на текущее отображение видео в UI?
Нет, рендеринг видеопотока продолжается штатно, сбой затрагивает исключительно подсистему записи на локальный диск.