网络摄像头流的速度非常慢

时间:2012-03-25 17:35:41

标签: java performance sockets streaming webcam

我一直在研究java中的小型网络摄像头程序,该程序从网络摄像头捕获图像,然后使用套接字将视频源流式传输到另一个程序(在另一台计算机上)。

到目前为止,我确实流式传输视频,但是大约需要1-5 fps才能以大约30 fps的速度传输视频

服务器通过te socket发送带有RGB数据的int数组。代码如下所示:

客户/接收者

try{    
                Object o;
                o = objInStream.readObject();
                if(o != null){

                    if(o instanceof int[]){
                        videoFeed.setRGB(0,0,640,480,(int[]) o, 0, 640);
                        repaint();
                    }
                }
            }catch(Exception ex){
                System.out.println("Error: " + ex.getMessage());
            }

发件人只是一个ObjectOutputStream:

outStream.send(图像); < --- image是RGB数据的int []。 outStream.flush();

然后线程休眠(10毫秒)。

可在此处看到该装置的视频:http://www.youtube.com/watch?v=esAMHOdoOUk 注意:视频中的版本只是将图像显示到本地计算机。

1 个答案:

答案 0 :(得分:0)

您可能正在使用TCP套接字进行传输。 TCP有很多开销,所以它真的不适合快速视频流。

我建议您尝试使用UDP套接字,这是一种非常快速(尽管不可靠)的协议。