【发布时间】:2020-03-09 15:56:09
【问题描述】:
我正在寻找一种通过网络传输 JPG 图像的标准化方法。还需要一个 C++ 编程接口,它可以很容易地集成到现有软件中。
我正在开发一个处理数字化信号并将其压缩为 JPG 图像的 GPGPU 程序。图像的大小可以由用户定义,通常图像为 1024 x 2048 或 2048 x 4096 像素。我已经编写了我的“自己的”协议,它首先发送一个标头(以字节为单位的图像大小、宽度、高度和相应的通道),然后通过 TCP 发送 JPG 数据本身。之后,接收方发送确认所有数据均已接收并正确显示,以便可以发送下一张图像。到目前为止一切顺利,不幸的是我的方法仅达到 12 fps,这不能满足项目要求。
我确信有更好的方法具有更高的帧速率。 Netflix 和 Amzon 等流媒体服务对超高清视频采用哪种方法?当然,我google了很多,但我找不到任何令人满意的结果。
【问题讨论】:
-
一般 Netflix 或其他供应商基本上使用 HTTP 流是什么,但它们会缓冲内容,例如缓冲电影的前 5 分钟,在您观看电影时继续下载和缓冲系统
-
您是在寻找图像传输还是视频流?这是两个不同的东西。
-
您声明您当前的
"approach reaches just 12 fps"。您是否进行了剖析以找到瓶颈?是生成 jpeg 时的 CPU 使用率还是传输这些 jpeg 时的网络带宽?还是别的什么? -
我正在寻找逐图像传输的图像。不幸的是,无法预先缓冲一些图像,因为它们应该实时显示。我没有准确地描述它,但我很确定瓶颈的原因是接收方的确认。如果我跳过确认,发射器发送速度太快,以至于图像不再正确显示在接收器上。但是,我更喜欢标准化的程序,因为我确信这个问题已经被专家们认真解决了很长时间。
-
如果只是从您机器上的本地文件中读取 JPG,您能够以多快的速度渲染它们?视频有自己的格式,例如 mpeg-4。视频格式利用了下一帧与前一帧可能只有微小差异这一事实,因此压缩率可以更高。