ローカル ソケットを介して Android の MediaRecorder から h264/AAC ビデオを送信しようとしています。目標は、RTMP または RTSP を介して WOWZA サーバーにビデオを送信することですが、多くの問題が発生しており、今のところ LocalServerSocket からファイルにデータを書き込もうとしています。
ここにいくつかのコードがあります。申し訳ありませんが、あまりきれいではありませんが、私は多くのことをテストするのに何時間も費やしました。私のプロジェクトは今混乱しています。
カメラ アクティビティでは、出力ファイルの設定:
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());
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) {}
}
}
問題は、これによって作成されたファイルがどのメディア プレーヤーでも読み取れないことです。これはエンコーディングの問題によるものだと思いますか? よく理解すれば、このコードはバイナリ ファイルを生成するはずですか?!
よろしくお願いします。