我正在开发一款Android应用程序,该应用程序应该能够将视频流式传输到本地网络上的本地服务器,而无需将其存储在SD卡上。Android MediaRecorder setOutPutFile()使用套接字流式传输
为此,我已在C#简单的socket应用程序,侦听特定IP:使用套接字端口:端口
在Android上一部分,我已经设置setOutputFile()
这个IP。
此应用程序在Android手机上完美启动,但不显示预览,当我开始录制时,它无任何例外退出。它也不会向网络发送任何数据流。
当我将setOutPutFile()
设置为SD卡时,它可以很好地工作并记录视频。
对于服务器部分,当我从任何其他应用程序(从PC)发送数据到相同的IP:PORT时,它会接收数据。
总之,我想建立PC和Android之间使用socket进行流媒体的通信渠道。
这里是我的Android代码:
Socket soc=new Socket("192.168.1.3",8210);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc);
...
...
// other Recorder setup steps
...
...
Recorder.setOutputFile(pfd.getFileDescriptor()); // working fine for sdcard
Recorder.setPreviewDisplay(holder.getSurface());
Recorder.prepare();
这里是我的服务器应用程序,在C#中,运行于PC:
socketForServer = new TcpClient("192.168.1.3", 8210);
NetworkStream networkStream = socketForServer.GetStream();
byte[] rData = new byte[1024];
networkStream.Read(rData, 0, 1024);
...
...
// process rData
...
...
我无法理解问题这是发生在这里。我正朝着正确的方向吗?
维诺德·你好,你能放开Android应用程序的源代码?我尝试做同样的事情,但视频冻结,我不知道为什么......谢谢。 – Rob 2011-05-03 06:12:37
嗨,对不起,我无法发布代码,因为它来自商业项目。如果您可以向我发送您的代码,我会尝试解决此问题。谢谢 – 2011-05-03 07:33:13
我基本上和你做同样的事情,但我在格式上苦苦挣扎......我收到了一些东西,但没有我想到的好头。我的问题在这里很好地描述(http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system),但我不知道如何处理。 你可以只显示一小部分? 谢谢。 – Rob 2011-05-05 07:37:47