Во-первых, контейнер MPEG4 - это больше, чем просто «заголовки» для видеоданных.
Во-вторых, код на стороне сервера мне не кажется правильным.Я предполагаю, что это Java.В частности:
dis = new DataInputStream(userSocket.getInputStream());
while(true){
dis.read(buf , 0 , buf.length);
saveBufferToFile(buf);
}
В частности, DataInputStream.read()
не обязательно считывает всю длину буфера.JavaDocs говорит:
Предпринята попытка прочитать столько же, сколько и байтов, но можно прочитать меньшее число, возможно, ноль.
Я подозреваю, что файл, который выЗапись на диск повреждена.Вы можете подтвердить это, сравнив количество байтов, отправленных клиентом, и размер файла.Моя интуиция говорит, что файл будет значительно больше.
Чтобы исправить это, вам нужно взять не байты, прочитанные read()
, а только записать их в байты на диск.Остальная часть буфера фактически является мусором, игнорируйте его.