Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

NET_RENDER_START_ERROR (35) IP-Телефония и СКУД

Dahua NetSDK Ошибка 35: NET_RENDER_START_ERROR — сбой видеорендеринга

Обновлено: 24.08.2026 · Официальная документация ↗
  • Вызов CLIENT_RealPlayEx или функции декодирования PLAY_Play возвращает ошибку 35.
  • В GUI-приложении отображается черный экран вместо живого видеопотока.
  • Приложение падает при попытке отрисовки видео в фоновом потоке или Windows-сервисе (Session 0 Isolation).
  • В системных логах фиксируются ошибки Direct3D/DirectDraw Device Creation Failed.

1. Проверка дескриптора окна отрисовки (HWND)

Если передается невалидный HWND или компонент уничтожается раньше видеопотока, SDK не может привязать контекст DirectDraw:

// Если рендеринг GUI не требуется (например, headless backend сервер/аналитика):
// Установите hWnd = NULL и используйте callback декодирования данных
CLIENT_RealPlayEx(lLoginHandle, 0, RealPlayType_Realplay, NULL);
CLIENT_SetRealDataCallBackEx2(lRealHandle, RealDataCallBackEx, dwUser, REALDATA_FLAG_RAW_DATA);

2. Проверка зависимостей библиотек PlaySDK

Dahua NetSDK делегирует рендеринг библиотекам декодера (dhplay.dll, play.dll или libdhplay.so под Linux). Убедитесь, что все библиотеки декодирования лежат в каталоге исполняемого файла:

# Linux: проверка линковки зависимостей декодера
ldd libdhplay.so
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/dahua/sdk/lib

3. Инициализация Direct3D в GUI приложениях (C# / WPF / WinForms)

При использовании WPF необходимо рендерить кадры через WriteableBitmap или компонент HwndHost, избегая кросс-поточных блокировок UI:

// Запрет аппаратного ускорения при сбоях видеодрайвера
PLAY_SetEngine(nPort, PLAY_ENGINE_GDI, 0); // Переключение на GDI программный рендер
PLAY_Play(nPort, (HWND)panelVideo.Handle);

4. Настройка работы в Windows Service / Headless Linux

Службы Windows (Service Control Manager) изолированы от графической подсистемы (Session 0). Для серверного захвата потока никогда не передавайте Handle окна; обрабатывайте YUV/RGB фреймы через fDecCBFun.

💡 Практика специалистов: Если приложение работает внутри Docker-контейнера без GPU-passthrough, попытка инициализировать стандартный рендерер Dahua вызовет ошибку 35. Контейнеризированные микросервисы должны собирать только 'RAW Stream' через флаги SDK без инициализации подсистемы Render.

Частые вопросы (FAQ)

Можно ли выполнять рендеринг видео в консольном приложении Linux?

В консольном приложении Linux без установленного X11 Server/Wayland рендеринг через HWND невозможен. Необходимо использовать callback fRealDataCallBack и декодировать поток через FFmpeg (libavcodec) самостоятельно.

Как переключить Dahua PlaySDK в режим программного декодирования?

Используйте функцию PLAY_SetEngine(nPort, PLAY_ENGINE_CPU, 0) до вызова PLAY_Play. Это отключит аппаратные вызовы DXVA2/D3D11.

Почему при смене разрешения камеры возникает ошибка 35?

При динамическом переключении разрешения с H.264 на H.265 или с 1080p на 4K буфер рендера переполняется. Необходимо вызвать PLAY_Stop(), затем сбросить буфер декодера PLAY_ResetBuffer() и перезапустить PLAY_Play().

Какая версия Visual C++ Redistributable требуется для корректной работы dhplay.dll?

Для стабильной работы Dahua NetSDK и PlaySDK требуются установленные пакеты Microsoft Visual C++ Redistributable 2010, 2015-2022 (x86 или x64 в зависимости от битности сборки приложения).

Полезные материалы
Рекомендуем