我一直在研究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 注意:视频中的版本只是将图像显示到本地计算机。
答案 0 :(得分:0)
您可能正在使用TCP套接字进行传输。 TCP有很多开销,所以它真的不适合快速视频流。
我建议您尝试使用UDP套接字,这是一种非常快速(尽管不可靠)的协议。