Имеется код на стороне клиента:
try {
            socket = new Socket(InetAddress.getByName(hostname), port);
            pfd = ParcelFileDescriptor.fromSocket(socket);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  recorder.setOutputFile(pfd.getFileDescriptor()); 
  //  String filename = String.format("/sdcard/%d.mp4", System.currentTimeMillis());
  // 
  // recorder.setOutputFile(filename);
    try
        {
        recorder.prepare();
            recorder.start();
        }
        catch (IllegalStateException e)
        {
        e.printStackTrace();
        }
        catch (IOException e)
        {
        e.printStackTrace();
        }
    }
и код собственно сервера:
 try
                {
                System.out.println("create sock");
                ServerSocket svsock = new ServerSocket(1935);
                System.out.println("accept");
                Socket sock = svsock.accept();
                System.out.println("buffer read");
                FileOutputStream outFile = null;
    String filename = String.format("%d.mp4", System.currentTimeMillis());
                   try {
                                        outFile = new FileOutputStream(filename);
                                        System.out.println(filename);
                                } catch (IOException e1) {
                                        e1.printStackTrace();
                                }
                  InputStream is = new DataInputStream(sock.getInputStream());
                                byte[] byteBuffer = new byte[1024];
                                int allsize = 0;
                                while(sock.isConnected()) {
                                    int size = is.read(byteBuffer);
                                        if (size == -1){
                                                break;
                                        } else {
                                                outFile.write(byteBuffer, 0, size);
                                        }
                                        allsize += size;
                                }
                                System.out.println("close size=" + allsize);
                                outFile.close();
                                sock.close();
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }       
                System.out.println("endmain");
        }
}
При запуске приложения на Android 2.2.2 (HTC quiet brilliant) все работает отлично. Я нажимаю кнопку открывается сокет на сервер, который записывает данные в файл. И файл этот затем успешно воспроизводится тем же VLC плеером.
Однако, когда я тестирую на Android 4.0.4 (Galaxy S2), сервер также создает файл и записывает в него данные, но при попытке воспроизвести файл VLC выдает ошибку 
mp4 error: MP4 plugin discarded (no moov,foov,moof box) avcodec error: Could not open �codec demux error: Specified event object handle is invalid ps error: cannot peek main error: no suitable demux module for `file/:///C:/1345461283455.mp4'
Другие плееры также отказываются его воспроизводить. (пробовал даже загрузить на youtube, но он также выдал мне ошибку формата файла). при этом если я не записываю на сервер а записываю на sdcard телефона, то все отлично создается и проигрывается. 
Тут может быть ошибка как на стороне сервера, так и какая-то новинка на API 15 (4.0.4). Может что-то надо добавить к getFileDescriptor() и т.д.
Помогите советом, пожалуйста, или по крайней мере не ставьте минус. Я долго и безуспешно гуглил, перед тем как накатать такой огромный вопрос :)