2013-04-02 40 views
3

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?

回答

1

MediaRecorder允許您將相機流寫入文件或套接字。現在,當您需要廣播實時饋送時,您可以將其發送到LocalSocket(對您自己),並在接收器套接字處接收以供進一步處理。

+0

確實很有幫助 – khunshan

相關問題