3

Spydroid-ipcamera 是一个开源的 Android 代码,可将手机的摄像头和麦克风传输到浏览器或 VLC。它的网站在这里:http ://code.google.com/p/spydroid-ipcamera/

当有人询问有关流式传输 Android 手机的相机时,这是 stackoverflow 中的一个典型示例。

查看它的代码:

(1) 它将两个套接字构建为一对:mSender、mReceiver

private LocalServerSocket mLss = null;
mLss = new LocalServerSocket("net.majorkernelpanic.librtp-"+sId);

mReceiver = new LocalSocket();
mReceiver.connect( new LocalSocketAddress("net.majorkernelpanic.librtp-" + mSocketId ) );
mReceiver.setReceiveBufferSize(500000);
mSender = mLss.accept();
mSender.setSendBufferSize(500000); 

(2)摄像头的输出写入mSender:在streaming/MediaStream.java中

// We write the ouput of the camera in a local socket instead of a file !   
setOutputFile(mSender.getFileDescriptor());

(3) 它构建了另一个对象mPacketizer,它包含一个RtpSocket 的成员。mPacketizer 对象从 mReceiver 接收摄像头输入流,将摄像头流封装成 RTP 数据包,然后通过网络发送数据包。

// the packetizer encapsulates this stream in an RTP stream and send it over the network
mPacketizer.setInputStream(mReceiver.getInputStream());

从这个意义上说,整个摄像机流是:

相机流 --> mSender --> mReceiver --> mPacketizer, RtpSocket --> 发送到网络。

我的问题是:为什么它需要两个套接字,mSender 和 mReceiver?一个套接字是否足以调解相机流和 RtpSocket?

4

1 回答 1

1

MediaRecorder 允许您将相机流写入文件或套接字。现在,当您需要直播供稿时,您可以将其发送到 LocalSocket(给您自己)并在接收器套接字处接收以进行进一步处理。

于 2015-04-10T09:40:17.310 回答