从安卓到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();
                    }                  
            }
    };

从安卓到C#服务器的实时相机

这个问题非常非常复杂,并不像它自己呈现的那么简单。让我指出一些可能对您有所帮助的事情:

    阅读UDP
  • 与TCP的区别。考虑到您发送的数据量,我建议使用UDP。但是,请注意,UDP 不会尝试恢复在通过网络传输时丢失的任何数据。

  • 如果我没记错的话,一个是小端,一个是大端。考虑到您的数据是纯字节,您需要更正正在接收的字节顺序(如果我错了,请更正我)。这本身就是一个完整的话题。

  • 考虑诸如Node之类的替代方案.js它们为您包装了很多东西,因此您不必处理造成最大麻烦的套接字,至少在服务器端是这样。我以前没有使用过 Node.js,但它似乎是一个运行良好的库,为您节省了很多麻烦。如果你以前从未做过套接字编程,如果你不知道自己在做什么,那就是活地狱;特别是如果您想处理多个连接。

  • 它基本上归结为两端快乐并且能够正确地相互交谈。我不确定您是否已经拥有服务器,但最大的挑战是它们如何正确相互通信。您必须让服务器确切地知道会发生什么,特别是当您想要发送图像数据以外的数据时。

我希望这有帮助!