2016-05-03 5 views
0

Also, ich habe dieses Video im .mp4 Format und ich habe es in Bytes konvertiert und an meinen Server geschickt und die Bytes in eine Datei geschrieben.So senden Sie eine Videodatei mit Byte-Stream?

Wenn ich versuche, die neue Datei zu öffnen, heißt es: 'No Proper Codec found' oder so ähnlich.

Also, wie übertrage ich das Video auf den Client mit dem Codec, so dass es auf meinem Server-Ende spielen kann.

Clinet.java

File file = new File("/Users/Batman/Documents/Eclipse/Record/outo.flv"); 
    InputStream is = new FileInputStream(file); 
    OutputStream os = RTSPSocket.getOutputStream(); 
    long len = file.length(); 
    byte[] bytes = new byte[(int) len]; 
    int offset = 0; 
    int numRead = 0; 
    while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) { 
     offset += numRead; 
    } 
    String s = String.valueOf(len); 
    RTSPBufferedWriter.write(s); 
    RTSPBufferedWriter.flush(); 
     os.write(bytes); 
    os.close(); 
    is.close(); 

Server.java

inputStream = socket.getInputStream(); 
       byte[] bytes = new byte[1415874]; 
       for (int i = 0; i < bytes.length; i++) { 
        fileOutputStream.write(inputStream.read(bytes)); 
       } 
       fileOutputStream.close(); 
       inputStream.close(); 

Dank

+0

Warum haben Sie Ihrer Frage keinen Code hinzugefügt? Es würde helfen, das Problem zu finden. – incBrain

+0

Mein Beispielcode – Spark

Antwort

0

Sie die Länge in ASCII zu senden, aber sie sind nie separat zu lesen. Stattdessen nehmen Sie eine fest verdrahtete Länge von 1415874 an. Die Länge ist also immer noch in der Eingabe vorhanden und wird in die Zieldatei geschrieben.

Das Senden der Länge in ASCII ohne Trennzeichen funktioniert sowieso nicht, da Sie am empfangenden Ende nicht wissen, wie lang die Länge ist. Sie sollten die Länge als long mit DataOutputStream.writeLong() senden und über DataInputStream.readLong() lesen. In der Tat sollten Sie wie in this answer angegeben vorgehen.

+0

hinzugefügt. Ich habe es mit DataOutput und Input Streams versucht. Ich bin in der Lage, die Bytes an die Zieldatei zu senden, aber wieder nicht in der Lage, das aufgezeichnete Video – Spark

+0

Ich kann es nicht für. MP4 tun, war aber in der Lage, es für FLV-Format zu tun. Aber ich brauche das für mp4-Video. Jede Hilfe wird geschätzt – Spark

+1

Es sollte keinen Unterschied machen, was das Format ist. Es sind nur Bits. Überprüfen Sie Ihren Code im Link gegen meinen und werden Sie nicht kreativ. Kopiere es. – EJP

Verwandte Themen