Spydroid-ipcamera是一款開源Android代碼,可將手機的攝像頭和麥克風傳輸到瀏覽器或VLC。 它的網站在這裏:http://code.google.com/p/spydroid-ipcamera/爲什麼在使用RTPsocket之前,Spydroid-ipcamera需要兩個套接字?
這是一個典型的例子,當有人問起關於流式傳輸Android手機的攝像頭時,在計算器中。
尋找到它的代碼:
(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: 在流/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接收攝像頭inputStream,將攝像頭流封裝到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?
確實很有幫助 – khunshan