我将尝试从Android的MediaRecorder通过本地Socket发送h264/AAC视频。目标是通过RTMP或RTSP向WOWZA服务器发送视频,但目前我遇到了很多麻烦,所以我只是试图将数据从LocalServerSocket写入文件。
以下是部分代码。很抱歉它不是很整洁,但我花了很多时间测试许多东西,我的项目现在一团糟。
在Camera活动中,设置输出文件:
本地服务器套接字实现:
问题在于生成的文件无法被任何媒体播放器读取。您认为这是由于编码问题引起的吗?如果我理解正确,这段代码应该生成一个二进制文件?!提前感谢,祝一切顺利。
以下是部分代码。很抱歉它不是很整洁,但我花了很多时间测试许多东西,我的项目现在一团糟。
在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());
本地服务器套接字实现:
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) {}
}
}
问题在于生成的文件无法被任何媒体播放器读取。您认为这是由于编码问题引起的吗?如果我理解正确,这段代码应该生成一个二进制文件?!提前感谢,祝一切顺利。
.3gp
等格式会有所帮助-请参见此处。 - zapl