Streaming de vídeo do MediaRecorder através do LocalSocket

Estou tentando enviar o vídeo h264 / AAC do MediaRecorder do Android por meio de um soquete local. O objetivo é enviar um vídeo para um servidor WOWZA através de RTMP ou RTSP, mas isso está me causando muitos problemas e, por enquanto, estou apenas tentando gravar os dados em um arquivo do LocalServerSocket.

Aqui está algum código. Desculpe, não está limpo, mas eu passei horas testando muitas coisas e meu projeto está uma bagunça agora.

Na atividade da câmera, a configuração do arquivo de saída:

LocalSocket outSocket = new LocalSocket();

try {
    outSocket.connect(new LocalSocketAddress(LOCAL_SOCKET));
} catch (Exception e) {
    Log.i(LOG_TAG, "Error connecting socket: "+e);
}
mMediaRecorder.setOutputFile(outSocket.getFileDescriptor());

A implementação do LocalServerSocket:

try {
    mLocalServerSocket = new LocalServerSocket(mName);
} catch (Exception e) {
    Log.e(LOG_TAG, "Error creating server socket: "+e);
    return;
}

while (true) {

    File out = null;
    FileOutputStream fop = null;
    try {
        mLocalClientSocket = mLocalServerSocket.accept();

        InputStream in = mLocalClientSocket.getInputStream();

        out = new File(mContext.getExternalFilesDir(null), "testfile.mp4");
        fop = new FileOutputStream(out);

        int len = 0;
        byte[] buffer = new byte[1024];
        while ((len = in.read(buffer)) >= 0) {

            Log.i(LOG_TAG, "Writing "+len+" bytes");
            fop.write(buffer, 0, len);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    finally{
        try {
            fop.close();
            mLocalClientSocket.close();
        } catch (Exception e2) {}
    }
}

O problema é que o arquivo resultante disso não é legível por qualquer reprodutor de mídia. Você acha que isso é por causa de um problema de codificação? Esse código deve gerar um arquivo binário se eu entendi bem ?!

Obrigado antecipadamente, felicidades.

questionAnswers(3)

yourAnswerToTheQuestion