как получить доступ к видеопотоку с IP камеры в UWP приложении?
Я нашел несколько IP камер, но проблема в том, что по этим адресам я могу получить только mjpg, а мне нужен поток видео с минимальной задержкой, есть ли способ это сделать?
- http://213.193.89.202/view/viewer_index.shtml?id=192619
- http://213.34.225.97:8080/view/viewer_index.shtml?id=25748
- http://81.149.56.38:8084/view/viewer_index.shtml?id=796
- http://217.128.111.137:8081/view/view.shtml?id=0&imagepath=%2Fmjpg%2F1%2Fvideo.mjpg&size=1
Ответы (2 шт):
Вот эти подтормаживания кадров видео - это или ограничение в настройках камеры (вряд ли) или же ограничение железа камеры (плохие камеры)
Если ты заглянешь в характеристики камеры то увидишь что-то вроде
480p - 25 fps 720p - 15 fps 1080p - 10 fps
Но даже то что пишут обычно они в х-ках камера округляют в большую сторону. Даже в средней и высокой ценовой категории камер такое практикуется, к сожалению. Поэтому покупая камеру где пишут 720p - 25 кадров - будь готов к тому что она будет показывать в лучшем случае 22 кадра в секунду.
Если же под задержкой имеется ввиду задержка перед передачей события - то это уже второй блок ограничений. Это как зависит от железа камер(камеры с централизированным контрольным блоком обычно имеют меньшие задержки, в отличии от "Standalone" камер), так и зависит от подключения к интернету конкретной камеры, нагруженности сети, подключения к интернету принимающей стороны и т.д.
Соответственно ни с тем ни с другим ты ничего сделать не можешь, если камеры не твои. Если камеры твои - купи камеры по-дороже и с централизированным контрольным блоком.
Можно использовать FFmpegInterop https://github.com/microsoft/FFmpegInterop для того, чтобы установить rtsp поток с камеры в качестве источника для элемента MediaElement в XAML:
ffmpeg = await FFmpegInterop.FFmpegInteropMSS.CreateFromUriAsync("rtsp://88.84.52.66/axis-media/media.amp");
MediaStreamSource streamSource = ffmpeg.GetMediaStreamSource();
mediaElement.SetMediaStreamSource(streamSource);
mediaElement.Play();