令我惊讶的是,http发布可能不是将视频实时流传输到服务器的好方法。其他人一直在使用实时流,他们使用套接字将实时视频流和音频流广播到其服务器。
我认为这很有趣-这是一个链接。
http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-
without-writing-to-the-file-
system
但那家伙还发布了部分代码示例-
String hostname = "your.host.name";int port = 1234;Socket socket = new Socket(InetAddress.getByName(hostname), port);ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);MediaRecorder recorder = new MediaRecorder();// Additional MediaRecorder setup (output format ... etc.) omittedrecorder.setOutputFile(pfd.getFileDescriptor());recorder.prepare();recorder.start();
我不知道的最酷的部分是ParcelFileDescriptor-它在android文件系统上创建了一个实际上是套接字的管道的文件-
因此,写入该文件的所有内容都会通过网络广播到远程服务器。套接字也是执行此类操作的正确方法,因为套接字使您可以连续发送数据直到记录完成,而不必一遍又一遍地重新发送标头。
我认为这项技术很酷的地方是,他实际上是从MediaRecorder接收输出(它将是编码的视频流),然后通过套接字将其泵送到他的服务器。然后,他可以简单地保存通过套接字传入的数据。没有逐帧,没有处理(Android
SDK不能很好地公开SDK中的编码器,并且它们的性能非常密集)。
人们报告说它有效,但是我还没有测试。无论如何,希望这会有所帮助。



