2014-01-20 3 views
-1

Я новичок в разработке Android и сталкиваюсь с этой проблемой, которую мой клиент хочет передать видеофайлам с его камеры на свой Android-телефон, используя только подключение к локальной сети .. это возможно? пока что единственное, что я могу сделать, это воспроизвести видео из хранилища телефона и потокового видео HTTP или RTSP, но можно ли передавать видеофайл при отправке через LAN? Спасибо.Android: Воспроизведение видеофайла mp4 при загрузке через LAN возможно?

@ Androider-я извиняюсь за не комментирование, потому что я не могу, так или иначе, это мой код, и любая помощь будет оценена благодаря вам. Отредактировано:

стороне клиента

` общественного класса Client расширяет Activi ти {

private Socket client; 
private FileInputStream fileInputStream; 
private BufferedInputStream bufferedInputStream; 
private OutputStream outputStream; 
private Button button; 
private TextView text; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    button = (Button) findViewById(R.id.button1); 
    text = (TextView) findViewById(R.id.textView1); 

    //Button press event listener 
    button.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 




File file = new File("/storage/emulated/BaseAhri.jpg"); 

try { 

client = new Socket("10.0.2.2", 4444); 

byte[] mybytearray = new byte[(int) file.length()]; 

fileInputStream = new FileInputStream(file); 
bufferedInputStream = new BufferedInputStream(fileInputStream); 

bufferedInputStream.read(mybytearray, 0, mybytearray.length); 

outputStream = client.getOutputStream(); 

outputStream.write(mybytearray, 0, mybytearray.length); 
outputStream.flush(); 
bufferedInputStream.close(); 
outputStream.close(); 
     client.close(); 

     text.setText("File Sent"); 


} catch (UnknownHostException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 

Server Side

private static ServerSocket serverSocket; 
private static Socket clientSocket; 
private static InputStream inputStream; 
private static FileOutputStream fileOutputStream; 
private static BufferedOutputStream bufferedOutputStream; 
private static int filesize = 10000000; 
private static int bytesRead; 
private static int current = 0; 

public static void main(String[] args) throws IOException { 


    serverSocket = new ServerSocket(4444); 

    System.out.println("Server started. Listening to the port 4444"); 


    clientSocket = serverSocket.accept(); 


    byte[] mybytearray = new byte[filesize]; 

    inputStream = clientSocket.getInputStream(); 
    fileOutputStream = new FileOutputStream("/sdcard/DCIM/Camera/BaseAhri.jpg"); 
    bufferedOutputStream = new BufferedOutputStream(fileOutputStream);}); 
    System.out.println("Receiving..."); 


    bytesRead = inputStream.read(mybytearray, 0, mybytearray.length); 
    current = bytesRead; 

    do { 
     bytesRead = inputStream.read(mybytearray, current, (mybytearray.length - current)); 
     if (bytesRead >= 0) { 
      current += bytesRead; 
     } 
    } while (bytesRead > -1); 


    bufferedOutputStream.write(mybytearray, 0, current); 
    bufferedOutputStream.flush(); 
    bufferedOutputStream.close(); 
    inputStream.close(); 
    clientSocket.close(); 
    serverSocket.close(); 

    System.out.println("Sever recieved the file"); 

} 

Error Server Side

[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.javacodegeeks.android.androidsocketserver/.Server }

[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Error type 3

[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Error: Activity class {com.javacodegeeks.android.androidsocketserver/com.javacodegeeks.android.androidsocketserver.Server} does not exist.

И в стороне клиента он выходит из строя после того, как я отправляю. Не уверен, s является ошибкой, так как у моего сервера есть проблема.

@ Androider -Изменить для позднего обновления. Вот мой результирующий код, где теперь я могу передать видеофайл и управлять его битами, но проблема в том, мои данные всегда повреждены из-за пропавшего байта или что-то в этом роде, и теперь, как я его потоку? Я не могу воспроизвести файл, потому что он не завершен? если это так, то какова цель управления байтом? Надеюсь, ты сможешь помочь мне снова.

КОДЕКСА Клиент и Сервер:

serverTransmitButton = (Button) findViewById(R.id.button_TCP_server); 
    serverTransmitButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Log.i("Start Server Button Clicked", "yipee"); 

      try { 
       // create socket 
       // TODO: the port should match the one in Client 
       ServerSocket servsock = new ServerSocket(5005); 
       while (true) { 
        Log.i("************", "Waiting..."); 

        Socket sock = servsock.accept(); // blocks until connection opened 
        Log.i("************", "Accepted connection : " + sock); 

        // sendfile 

        // TODO: put the source of the file 

         int filesize=8192; 
        File myFile = new File ("/sdcard/DCIM/Camera/test.mp4"); 
        byte [] mybytearray = new byte [filesize]; 

        Log.i("####### file length = ", String.valueOf(myFile.length())); 
        FileInputStream fis = new FileInputStream(myFile); 
        BufferedInputStream bis = new BufferedInputStream(fis); 
        bis.read(mybytearray,0,mybytearray.length); 
        OutputStream os = sock.getOutputStream(); 
        Log.i("************", "Sending..."); 
        int read; 
        while((read = fis.read(mybytearray)) != -1){ 
        os.write(mybytearray,0,read); 


        } 

        os.flush(); 
        os.close(); 
        fis.close(); 
        bis.close(); 
       } 
      } catch (IOException e) { 
       Log.i("Io execption ", "e: " + e); 
      } 

      Log.i("=============== the end of start ==============", "=="); 
     } 
    }); 

    clientReceiveButton = (Button) findViewById(R.id.button_TCP_client); 
    clientReceiveButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Log.i("Read Button Clicked", "yipee"); 

      try { 
       int bufferSize;// filesize temporary hardcoded 

       long start = System.currentTimeMillis(); 
       int bytesRead; 
       int current; 
       // localhost for testing 
       // TODO: server's IP address. Socket should match one above in server 
       Socket sock = new Socket("192.168.123.186",5005); 

       Log.i("************", "Connecting..."); 

       // receive file 
       bufferSize=sock.getReceiveBufferSize(); 
       byte [] mybytearray = new byte [bufferSize]; 
       InputStream is = sock.getInputStream(); 

       FileOutputStream fos = new FileOutputStream("/storage/emulated/0/testinggo.mp4"); 
       BufferedOutputStream bos = new BufferedOutputStream(fos); 
       bytesRead = is.read(mybytearray,0,mybytearray.length); 


       while((current = is.read(mybytearray)) >0){ 
       bos.write(mybytearray, 0 , current); 
       } 

       bos.flush(); 
       bos.close(); 
       is.close(); 
            sock.close 




      } catch (UnknownHostException e) { 
       Log.i("******* :(", "UnknownHostException"); 
      } catch (IOException e){ 
       Log.i("Read has IOException", "e: " + e); 
      } 

      Log.i("=============== the end of read ===============", "=="); 

     } 
    }); 


} 

}

ответ

0

На самом деле это. Вам нужно будет создать собственный сервер сокетов в приложении и воспроизвести видео. Тогда у вас будет контроль над потоком ввода байта и сохранение загруженной части в файл, пока та же часть пойдет в медиапланер.

+0

спасибо за быстрый ответ случайный «goodguygreg», если это не проблема, вы можете спросить, где начать некоторые ссылки, возможно ? относительно этого продукта сокета-сервера ... – user3213989

+0

Вот несколько ссылок: http://android-er.blogspot.co.il/2011/01/implement-simple-socket-server-in.html http: // android-er .blogspot.co.il/2011/01/simple-communication-using.html – Androider

+0

И какой-то подобный вопрос http://stackoverflow.com/questions/2511045/streaming-to-the-android-mediaplayer – Androider

Смежные вопросы