2016-05-03 6 views
0

私はこのビデオを.mp4形式で持っています。私はそれをバイトに変換し、私のサーバーに送りバイトをファイルに書きました。バイトストリームを使用してビデオファイルを送信する方法は?

新しいファイルを開こうとすると、「No Proper Codec found」と表示されます。

私はサーバー側で再生できるように、ビデオをコーデック付きのクライアントに転送する方法を教えてください。

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(); 

おかげ

+0

なぜあなたの質問にいくつかのコードを追加しませんでしたか?それは問題を見つけるのに役立ちます。 – incBrain

+0

私のサンプルコードを追加しました – Spark

答えて

0

あなたはASCIIで長さを送っているが、あなたは別にそれを読んだことはありません。代わりに、ハードワイヤードの長さは1415874と仮定しています。したがって、長さはまだ入力にあり、ターゲットファイルに書き込まれます。

長さの長さは受信側でわからないので、区切り文字なしで長さをASCIIで送信すると、とにかく動作しません。長さをlongとして送信し、DataOutputStream.writeLong()を使用し、DataInputStream.readLong()で読み取る必要があります。実際にはthis answerのように進めてください。

+0

私はDataOutputとInput Streamsを使って試しました。私は、宛先ファイルにバイトを送信することができますが、再び、記録されたビデオを再生することができません – Spark

+0

私は.mp4のためにそれを行うことができませんが、.flv形式のためにそれを行うことができました。しかし、私はmp4ビデオのためにこれが必要です。どんな助けもありがたいです – Spark

+1

形式が何であれ違いはありません。それは単なるビットです。リンク内の自分のコードを再確認して、創造的なものにしないでください。それをコピーします。 – EJP

関連する問題