Вопрос или проблема
Я разрабатываю функцию, где пользователь сможет получить доступ к камере и получить видеопоток в реальном времени дистанционно, используя RTSP NVR. Я пытался реализовать это с помощью RTSP URL NVR, но это не работает, в то время как я могу получить Live-View через IP-камеры, но в пределах локальной сети не могу получить доступ к этимкамерам за пределами сети.
Существует ли какая-либо настройка на панели управления Hikvision или невозможно получить видеопоток в реальном времени, используя RTSP для NVR? Если это невозможно, есть ли какой-либо способ достичь этой цели?
RTSP URL, которые я использовал, следующие:
Для NVR: http://<admin>:<password>@192.168.xx.x:554/Streaming/Channels/2/
Для камеры: rtsp://<admin>:<password>@192.168.xx.x:554/Streaming/Channels/101
Ответ или решение
Для реализации функционала удаленного доступа к камере HikVision через RTSP с использованием Flutter и NVR, вам потребуется выполнить ряд шагов, как с точки зрения настройки оборудования, так и с точки зрения программирования. Ниже приведены детальные рекомендации.
1. Настройка сетевого окружения
1.1. Доступ через интернет
Первое, что необходимо сделать — обеспечить доступ к вашему NVR и камерам из глобальной сети. Вы можете использовать следующие подходы:
-
Проброс портов (Port Forwarding): Настройте проброс необходимых портов на вашем маршрутизаторе. Обычно для RTSP используется порт 554. Пробросьте этот порт на IP-адрес вашего NVR. Убедитесь, что у вас есть доступ к администратору маршрутизатора.
-
Динамический DNS (DDNS): Если у вас динамический IP-адрес, лучше использовать DDNS сервис для получения постоянного доменного имени. Это позволит вам всегда подключаться по одному и тому же адресу.
1.2. Настройка HikVision NVR
-
Проверка настроек сети: Зайдите в веб-интерфейс вашего NVR и перейдите в настройки сети. Убедитесь, что NVR имеет статический IP-адрес или что ваш DHCP сервер всегда выдает тот же IP-адрес.
-
Пользовательские настройки: Убедитесь, что у вас есть доступ к RTSP в настройках пользователя и они правильно настроены. Это может включать разрешение на использование потокового видео для вашего пользователя.
2. Проверка RTSP URL
Ваш RTSP URL должен иметь правильный формат. Для NVR это может выглядеть следующим образом:
rtsp://<admin>:<password>@<ваш_внешний_IP>:554/Streaming/Channels/2/
- Замените
<ваш_внешний_IP>
на ваш статический или DDNS адрес.
3. Реализация в Flutter
3.1. Использование пакетов
Рекомендуется использовать сторонние библиотеки, такие как flutter_ffmpeg
или video_player
, для реализации потокового видео в вашем приложении Flutter. Пример кода может выглядеть следующим образом:
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class LiveViewScreen extends StatefulWidget {
@override
_LiveViewScreenState createState() => _LiveViewScreenState();
}
class _LiveViewScreenState extends State<LiveViewScreen> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(
'rtsp://<admin>:<password>@<ваш_внешний_IP>:554/Streaming/Channels/2/')
..initialize().then((_) {
setState(() {});
_controller.play();
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Live View')),
body: Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: CircularProgressIndicator(),
),
);
}
}
4. Возможные проблемы и их решение
-
Брандмауэр: Убедитесь, что на вашем NVR и маршрутизаторе настроены исключения для использованных портов.
-
Лимиты на количество подключений: Некоторые NVR могут иметь ограничения на количество одновременных потоковых соединений.
-
Качество сети: Проверьте пропускную способность вашей сети, так как RTSP потоки могут требовать значительных ресурсов.
Заключение
Доступ к камере HikVision через RTSP в Flutter возможен, если вы правильно настроите оборудование и используете корректные URL адреса. Следуя вышеизложенным шагам, вы сможете обеспечить пользователям вашего приложения возможность удаленного просмотра живого видео. Если возникнут дополнительные вопросы или сложности, не стесняйтесь обращаться к документации HikVision или технической поддержке.