2011-03-02 49 views
1

我想从android手机摄像头将视频流到运行在PC上的VLC媒体播放器。从Android上接收视频流到PC上的VLC

我写了一个示例代码,使用MediaRecorder将视频流式传输到本地网络上的特定IP。手机上的应用程序正在工作,但我无法在VLC媒体播放器中获取该流。

我的Android应用程序的代码流式传输视频至网络:

InetAddress serverAddr = InetAddress.getByName("192.168.2.8"); 
    Socket soc=new Socket(serverAddr,8210); 
    ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc); 
    tempRecorder.setOutputFile(pfd.getFileDescriptor()); 
    tempRecorder.prepare(); 

谁能告诉我哪里做错了,或如何做到这一点?

回答

3

媒体记录器用于记录。您指定的输出文件将具有录制的视频,您将将该文件发送到服务器以作为一个视频文件播放。我希望你做的这一切:

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(PATH_NAME); 
recorder.prepare(); 
recorder.start(); // Recording is now started 
... 
recorder.stop(); 
recorder.reset(); // You can reuse the object by going back to setAudioSource() step 
recorder.release(); // Now the object cannot be reused 

还可以阅读the docs

公共无效setOutputFile(字符串路径)

设置输出文件的路径待产。在setOutputFormat()之后但在prepare()之前调用此方法。

但是,如果你想通过帧的视频帧流到你的电脑,你需要捕捉每一帧的Camera.PreviewCallbackonPreviewFrame方法。从此回调传输字节数组到您的服务器。通过这种方式,您将拥有从设备相机到服务器的连续图像帧。

+0

谢谢!所以我需要在Camrea.PreviewCallback中实现这些方法。 – 2011-03-03 07:31:04

+0

是的,你应该从电话回来。如果你只是想传输视频,你可以从媒体记录中记录下来,然后发送到服务器 – Veeresh 2011-03-03 14:26:52

+0

我已经按照你的建议实现了逐帧方法,并且我得到了我正在寻找的东西,再次感谢! – 2011-03-15 13:09:26