#swift #streaming #swift5 #tvos #mjpeg
#swift #потоковая передача #swift5 #tvos #mjpeg
Вопрос:
Мы используем программное обеспечение ZoneMinder для потоковой передачи изображений в формате JPEG (MJPEG), это хорошо работает, если применяется к тегу HTML <img/>
, который показывает автоматически обновляемые изображения каждые 30 секунд:
<html>
<body>
<img src="https://oursite/cgi-bin-zm/nph-zms?scale=50amp;width=1920pxamp;height=1080pxamp;mode=jpegamp;maxfps=30amp;monitor=21amp;connkey=150000amp;rand=1598607232" width="860px" height="340px"/>
</body>
</html>
Используя Swift 5, я попытался распечатать URL / изображение в UIImageView
следующим образом:
let liveURL = URL(string:"https://oursite/cgi-bin-zm/nph-zms?scale=50amp;width=1920pxamp;height=1080pxamp;mode=jpegamp;maxfps=30amp;monitor=21amp;connkey=150000amp;rand=1598607232")
let session = URLSession(configuration: URLSessionConfiguration.default, delegate: self, delegateQueue:OperationQueue.main)
session.dataTask(with: url) { (data, request, error) in
guard let data = data, error == nil else { return }
print("Download Finished")
DispatchQueue.main.async() { [weak self] in
self?.imgLive.image = UIImage(data: data)
}
}.resume()
Изначально у меня была ошибка самоподписанного SSL при доступе к домену, которая разрешилась после использования self as URLSessionDelegate
.
Я подтверждаю, что с помощью приведенного выше блока кода я могу получить любое обычное изображение из другого удаленного местоположения.
Однако, используя наш URL-адрес поставщика изображений для прямой трансляции, я вижу, что метод data
under dataTask
всегда равен 0 байтам.
Как я могу получить доступ к такому URL, обеспечивающему потоковое изображение и эффективное отображение в Swift?
Ответ №1:
Я думаю, мне не нужно заново изобретать колесо, когда кто-то его уже изобрел.
https://github.com/WrathChaos/MJPEGStreamLib — Это хорошо сработало для меня при потоковой передаче изображений MJPEG из удаленного местоположения!