从安卓到C#服务器的实时相机
本文关键字:实时 相机 服务器 | 更新日期: 2023-09-27 18:36:59
我需要你的帮助我尝试创建客户端-服务器应用程序。客户端是安卓手机,服务器是PC(C#)。我想要实时(尽可能多)的相机预览。我想我必须在C# UDP和java DatagramSocket中使用。我添加了从相机获取预览的功能,并尝试将字节数组发送到服务器,但它不起作用。也许你对我有一些解决方案,这是我的代码
private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback()
{
public void onPreviewFrame( byte[] data, Camera Cam ) {
Log.e("CombineTestActivity", "Preview started");
Log.e("CombineTestActivity", "Data length = "
+ data.length );
try
{
InetAddress serverAddr = null;
try {
serverAddr = InetAddress.getByName("192.168.0.102");
} catch (UnknownHostException e) {
e.printStackTrace();
}
DatagramPacket packet = new DatagramPacket(data, data.length, serverAddr, 9050);
updatetrack("Client: Sending '" + new String(data) + "''n");
Log.e("Client ", "C: Sending");
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
};
这个问题非常非常复杂,并不像它自己呈现的那么简单。让我指出一些可能对您有所帮助的事情:
- 阅读UDP
与TCP的区别。考虑到您发送的数据量,我建议使用UDP。但是,请注意,UDP 不会尝试恢复在通过网络传输时丢失的任何数据。
如果我没记错的话,一个是小端,一个是大端。考虑到您的数据是纯字节,您需要更正正在接收的字节顺序(如果我错了,请更正我)。这本身就是一个完整的话题。
考虑诸如Node之类的替代方案.js它们为您包装了很多东西,因此您不必处理造成最大麻烦的套接字,至少在服务器端是这样。我以前没有使用过 Node.js,但它似乎是一个运行良好的库,为您节省了很多麻烦。如果你以前从未做过套接字编程,如果你不知道自己在做什么,那就是活地狱;特别是如果您想处理多个连接。
它基本上归结为两端快乐并且能够正确地相互交谈。我不确定您是否已经拥有服务器,但最大的挑战是它们如何正确相互通信。您必须让服务器确切地知道会发生什么,特别是当您想要发送图像数据以外的数据时。
我希望这有帮助!