2013-05-11 6 views
0

이 코드는 TCP를 통해 C# 서버에서 여러 이미지 (비디오)를 수신하고 있습니다. 그러나 매우 느립니다. 또한 프레임이 누락 되어도 프레임을 빠르기 (지연 제거) 할 수있는 방법이 없습니다. 닫는 소켓 또는 데이터 입력 스트림을 사용하는 대신.다중 이미지를 수신하는 TCP

private Runnable connectSocket=new Runnable() { 

     @Override 
     public void run() { 

      { 

         try { 
             socket = new Socket(serverAddr, 4444); 
          DataInputStream dis; 
          try { 


           dis=new DataInputStream(socket.getInputStream()); 

           int bytesRead; 
           byte[] pic = new byte[5000*1024]; 
           bytesRead = dis.read(pic, 0, pic.length); 
           bitmapimage = BitmapFactory.decodeByteArray(pic, 0, bytesRead);    


          } catch(Exception e) { 
           Log.e("TCP", "S: Error", e); 
          } finally { 
           socket.close(); 
          } 

         } catch (UnknownHostException e) { 
          // TODO Auto-generated catch block 
          Log.e("TCP", "C: UnknownHostException", e); 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          Log.e("TCP", "C: IOException", e); 
          e.printStackTrace(); 
         } 
         imgview.setImageBitmap(bitmapimage); 
         imgview.invalidate(); 


    } 
      mHandler.postDelayed(this, 0); 
     } 
    }; 


    } 

답변

0

이미지로 이미지를 보내는 것은 그리 좋은 방법은 아닙니다. 압축 된 비디오 형식 사용을 고려하십시오.

또한 정말로 빠르게 만들 수는 없습니다. 그것은 모두 2G에있는 네트워크 장치가 wifi/3G보다 항상 느리다는 것에 달려 있습니다.

+0

난 그냥 다시 열고 socket.is 재현하고 싶지 않아? – waqasanwaar

관련 문제