Я создаю веб-приложение в облаке AWS, которое требует потоковой передачи записанного / живого видео по глобальной сети. Я купил IP-камеру (GV-AVD4710) и NVR (GV-SNVR0811) для нашего приложения. В будущем мне нужно стрим нет. камер в моем приложении.
Пока используется камера С NVR я подключил NVR в нашей локальной сети и камеру на channel_1 NVR. Теперь давайте предположим, что NVR получает IP 192.168.1.203. Таким образом, для потокового rtsp URL для channel_1 будет "rtsp://id:password@192.168.1.203:554/ch1"
согласно спецификации производителя. Для потоковой передачи камеры я использую мультимедийную среду "ffmpeg" (https://github.com/xpcrts/Steaming-IP-Camera-Nodejs). Так что работает нормально. Я проверил это и хорошо работает в локальной сети. Код, работающий на сервере
Stream = require('node-rtsp-stream')
stream = new Stream({
name: 'name',
streamUrl: 'rtsp://ID:PASSWORD@abcxyz.com:554/ch1',
wsPort:3000,
ffmpegOptions: {
'-stats': '',
'-r': 30
}
})
, и код, работающий на стороне клиента, который не зависит от каких-либо подключаемых модулей
<div>
<canvas id="chanel1" width="auto" height="auto"></canvas>
<script type="text/javascript" src="jsmpeg.min.js"></script>
<script type="text/javascript">
var canvas = document.getElementById('chanel1');
var websocket = new WebSocket("ws://34.202.222.188:3000");
var player= new jsmpeg(websocket, {canvas:canvas, autoplay:true, loop:true})
</script>
</div>
Когда я сделал этот IP-адрес общедоступным, итогда начинается проблемаОн не работает и выдает ошибку:
"[tcp @ 0x563911f0a340] Connection to tcp://192.168.1.205:554?timeout=0 failed: Connection timed out
rtsp://admin:admin@192.168.1.205: Connection timed out RTSP stream exited with error"
В камере без NVR я подключил камеру напрямую к нашей локальной сети и получил URL-адрес rtsp, например, rtsp: // id: password@192.168.1.205/СМИ / video1. То же самое происходит снова. Хорошо работает в локальной сети, но не работает, когда я делаю это доступным в общедоступной сети.
Как можно передавать видео через глобальную сеть? Можно ли реализовать эту логику, используя мультимедийную среду ffmpeg? Может ли VLC помочь в этих случаях?
Я хотел бы повторить, что в будущем их нет. камеры должны быть потоковыми.