我想将视频从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();
有谁能告诉我我做错了什么或怎么做?
答案 0 :(得分: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:
public void setOutputFile (字符串路径)
设置要生成的输出文件的路径。在setOutputFormat()之后但在prepare()之前调用它。
但是,如果您想逐帧将视频流式传输到PC,则需要使用onPreviewFrame
的{{1}}方法捕获每个帧。从此回调将字节数组传输到您的服务器。这样,您将拥有从设备相机到服务器的连续图像帧流。