首页 文章

直播:效率JPEG与MJPEG

提问于
浏览
0

我有一个显示livecam的网络服务器 .
它有两种模式:

  • JPEG(在页面刷新时显示当前图像)

  • MJPEG(显示MJPEG流)

目前我正在使用JPEG模式 . 我每秒下载并显示Image 20x .
这完美无损 .
但它具有相当高的CPU使用率(在我的iPhone 6S上大约70%的200%) .

码:

if let url = NSURL(string: "http://1.1.1.181:8085/?action=snapshot") {
    let request = NSURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData , timeoutInterval: 1)
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
        (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
        if data != nil {
            self.imageView.image = UIImage(data: data!)                    
        } 
    }
}

我的问题:

  • 是否有更有效的方式从网页下载和显示图像?

  • 使用MJPEG流更有效 . (如果是:您可以推荐哪个框架)?

2 回答

  • 0

    是的,您需要使用某种视频编解码器,因为您有视频 . 尝试发送这样的单个帧是浪费带宽和CPU . 令我印象深刻的是你从目前的设置中得到20 FPS .

    MJPEG是一种视频编解码器,通过不断增强图像,与JPEG工作方式完全相同 . 更改的帧的内容将作为已有内容的增强功能进行推送,从而节省大量带宽 . MJPEG也很容易实现,因为如果你可以解码JPEG渐进式,你就可以解码MJPEG(可能还有一些小的改进) .

    无论如何,目前有更好的视频编解码器可用 . 其中许多都有硬件编解码器,这意味着工作被卸载到该编解码芯片而不是由CPU直接处理 . 这就是高性能视频在硬件上运行的方式,否则无法跟上 . 根据目标平台上已存在的系统支持,确定要使用的编解码器 . 随着VP9的出现,H.264和VP8非常受欢迎 .

  • 2

    两者之间几乎没有差别 . 唯一的区别是,对于 M-JPEG ,流发送 JPEG 的序列,而不是每个请求一个,因此您不会浪费带宽打开每帧的新连接,这种情况与图像大小相比可以忽略不计,并且由于缓冲而不是丢帧,M-JPEG可能导致低带宽连接中的图像延迟 .

    Motion JPEG — Encoding — Wikipedia

    video surveillance on C# — CodeProject

相关问题