【发布时间】:2021-04-13 11:15:26
【问题描述】:
我正在尝试创建 Mjepg 流。我遵循了一个教程,并没有很多代码可以引导流,但我不明白为什么它不适合我。
//Class properties
private var mjpegSession : URLSession?
private var mjpegData:Data = Data()
override func viewDidLoad(){
...
mjpegSession = URLSession(configuration: .default, delegate: self, delegateQueue: nil)
if let url = URL(string: "http://cam6284208.miemasu.net/nphMotionJpeg?Resolution=640x480") {
mjpegSession?.dataTask(with: url).resume()
}
}
extension ViewController: URLSessionDataDelegate, URLSessionTaskDelegate {
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
mjpegData.append(data)
}
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
if mjpegData.count > 0 {
DispatchQueue.main.async{
if let image = UIImage(data: self.mjpegData){
self.cameraImageView.image = image
}
}
}
mjpegData.removeAll()
completionHandler(.allow)
}
}
教程删除了上面写着的行中的所有数据
mjpegData.removeAll()
但是,如果我这样做,图像是不完整的,并且日志中有关于无法解码图像的错误。如果我删除它,我会得到一个完整的框架或图像,但我只会得到一个。在 VLC 中使用该 url 会显示一个恒定流,因此我知道该 url 是有效流。感谢大家的时间。
【问题讨论】:
标签: ios swift video-streaming mjpeg