Java 我想做一个服务器,可以把视频作为字节流,并保存它

Java 我想做一个服务器,可以把视频作为字节流,并保存它,java,Java,我想做一个服务器,它可以采取视频作为字节流,并保存它。我得到了流和写在.mp4文件的文件,但它不播放,因为它是损坏的 int port = 3332; ServerSocket serverSocket = new ServerSocket(port); System.out.println("waiting for connection on port "+port); Socket socket = serverSocket.accept(); System.out.println("c

我想做一个服务器,它可以采取视频作为字节流,并保存它。我得到了流和写在.mp4文件的文件,但它不播放,因为它是损坏的

int port = 3332;

ServerSocket serverSocket = new ServerSocket(port);
System.out.println("waiting for connection on port "+port);

Socket socket = serverSocket.accept();
System.out.println("connection stablished on port "+port);

String clientIPAddress=socket.getRemoteSocketAddress().toString();
System.out.println("client ip address\t"+clientIPAddress);

in = socket.getInputStream();
BufferedInputStream bstream=new BufferedInputStream(in);
DataInputStream dstream=new DataInputStream(bstream);
out = new PrintWriter(socket.getOutputStream(),true);


try{
    FileOutputStream fos = new FileOutputStream("D://output/Output.mpeg");

    while(isDisconnect){
        String deviceId=dstream.readLine();
        System.out.println(""+deviceId);

        String timeStamp=dstream.readLine();
        System.out.println(""+timeStamp);

        while ((length = bstream.read(theServer.buf)) > 0) {
            fos.write(theServer.buf, 0, length);
            System.out.println("Length\t"+length+"\n");
            out.println("received");

        }   
    }       
} catch(Exception ex){
    System.out.println(ex);
    System.exit(0);
}

尝试以下代码将流保存到文件中而不损坏,如果需要任何其他帮助或我遗漏了什么,请告诉我

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.ArrayList;
import com.amazonaws.util.IOUtils;



 public class Test1 {

        public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            URL url = new URL("http://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_480_1_5MG.mp4");
            inputStream = url.openStream();
            outputStream = new FileOutputStream(new File("/Users/dev/file_example_MP4_480_1_5MG_copy.mp4"));
            byte[] byteArr = IOUtils.toByteArray(inputStream);
            outputStream.write(byteArr);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (outputStream != null) {
                try {
                    // outputStream.flush();
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }

    }

System.out.println(“+”时间戳)吹毛求疵,但
“+…
是无用的。
FileOutputStream(“D://output/output.mpeg”)!=mp4?@skynet我试过了。mp4也是,但会发生同样的问题吗?在我之前的代码中,文件是写的,大小也是MB,但当我在VLC或其他媒体播放器中打开它时,它不会播放。你能解释一下为什么要使用
fos.write(server.buf,0,length)而不是fos.write(server.buf);fos.write(server.buf,0,length)在这种方法中,buf值是从0索引到长度值写入FileOutputStream中我能够读取一个文件并将其写入其他位置,但我正在努力写入以字节流形式出现的视频直播流