Przesyłanie strumieniowe wideo z MediaRecorder przez LocalSocket

Próbuję wysłać wideo h264 / AAC z Android MediaRecorder za pośrednictwem lokalnego gniazda. Celem jest wysłanie wideo do serwera WOWZA poprzez RTMP lub RTSP, ale to sprawia mi wiele problemów i na razie próbuję tylko zapisać dane do pliku z LocalServerSocket.

Oto kod. Niestety nie jest to naprawdę czyste, ale spędziłem wiele godzin na testowaniu wielu rzeczy, a mój projekt jest teraz bałaganem.

W działaniu kamery konfiguracja pliku wyjściowego:

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

Implementacja 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) {}
    }
}

Problem polega na tym, że plik wynikający z tego nie może być odczytany przez żaden odtwarzacz multimedialny. Czy uważasz, że to z powodu problemu z kodowaniem? Ten kod powinien wygenerować plik binarny, jeśli dobrze rozumiem?

Z góry dziękuję, okrzyki.

questionAnswers(3)

yourAnswerToTheQuestion