jar*_*bjo 14
使用纯Java解决方案,我怀疑它会起作用,但它当然取决于您对"视频"的解释.
在我的桌面上,分辨率为1920x1200,使用Java Robot捕获整个屏幕时,我每秒可以获得大约20帧.由于每个映像包含> 6 MB的未压缩数据,因此我需要超过1 Gbps的带宽才能将这些映像的原始数据传输到服务器.最有可能的是,需要如此多的带宽是不可接受的,因此您要么必须减少每秒的帧数,要么对图像应用某种压缩.
一种可能性是使用ImageIO支持的图像格式之一压缩每个图像.压缩图像的大小当然在很大程度上取决于屏幕上实际显示的内容,但压缩机的性能并不是特别好.压缩到PNG应该为大多数桌面内容提供最佳的无损压缩率,但至少我的计算机每秒只能处理大约2帧.使用具有默认质量设置的JPEG压缩器可达到每秒约5帧.
通过像jffmpeg这样的抽象层使用常见的视频编解码器可能会获得更好的性能和更好的压缩比,但我怀疑像WMV或H.264这样的主流视频编解码器适用于常见的桌面内容.
如果你真的需要一个纯Java解决方案(并且不能使用任何可用的独立软件,那就是你所要求的),我会尝试实现我自己的简单压缩算法.对于常见的桌面活动,大多数连续屏幕截图之间应该有很小的差异,所以可能工作得很好的是完全传输第一帧,然后实现一个算法来粗略检测矩形,其中已经进行了更改然后仅传输这些与JPG或优选(质量)PNG压缩相结合.
| 归档时间: |
|
| 查看次数: |
10385 次 |
| 最近记录: |