我正在尝试通过本地套接字从 Android 的 MediaRecorder 发送 h264/AAC 视频。目标是通过 RTMP 或 RTSP 将视频发送到 WOWZA 服务器,但这给我带来了很多麻烦,现在我只是尝试将数据从 LocalServerSocket 写入文件。
这是一些代码。抱歉,它不是很干净,但我花了几个小时测试很多东西,我的项目现在一团糟。
在 Camera 活动中,输出文件设置:
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) {}
}
}
问题是任何媒体播放器都无法读取由此产生的文件。您认为这是因为编码问题吗?如果我理解得很好,这段代码应该会生成一个二进制文件?!
提前谢谢,干杯。