我正在开发一个 Android 应用程序,它应该能够将视频流式传输到网络上的本地服务器,而无需将其存储在 SD 卡上。
为此,我在 C# 中制作了简单的套接字应用程序,用于监听特定的 IP:PORT
在Android部分,我设置了setOutputFile()
使用套接字连接到此 IP:PORT。
该应用程序在 Android 手机上完美启动,但它不显示预览,当我开始录制时,它毫无例外地退出。它也不向网络发送任何数据流。
当我设置setOutPutFile()
到SD卡,它工作完美并且还可以录制视频。
对于服务器部分,当我将数据从任何其他应用程序(从 PC)发送到同一 IP:PORT 时,它会收到数据。
简而言之,我想使用套接字在PC和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
...
...
我无法理解这里发生的问题。我的方向正确吗?