欢迎来到天天文库
浏览记录
ID:16900173
大小:395.12 KB
页数:21页
时间:2018-08-25
《基于socket的android手机视频实时传输》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Socket的Android手机视频实时传输肖泽云首先,简单介绍一下原理。主要是在手机客户端(Android)通过实现Camera.PreviewCallback接口,在其onPreviewFrame重载函数里面获取摄像头当前图像数据,然后通过Socket将图像数据和相关的用户名、命令等数据传输到服务器程序中。服务器端(PC端)采用C#编写,通过监听相应的端口,在获取数据后进行相应的命令解析和图像数据还原,然后将图像数据传递至PictureBox控件中用于显示,这样就实现了手机摄像头的视频数据实时传输到服务器上。如果需
2、要将这些视频进行转发,通过服务器再将这些数据复制转发即可。效果如下:对于Android客户端上主要有几个地方需要注意,第一个就是Socket通信。Socket通信可以通过Socket类来实现,直接结合PrintWriter来写入命令,如下定义的一个专门用于发送命令的线程类,当要连接到服务器和与服务器断开时,都需要发送命令通知服务器,此外在进行其他文字传输时也可以采用该方法,具体代码如下:/**发送命令线程*/classMySendCommondThreadextendsThread{privateStringcommond
3、;publicMySendCommondThread(Stringcommond){this.commond=commond;}publicvoidrun(){//实例化Sockettry{Socketsocket=newSocket(serverUrl,serverPort);PrintWriterout=newPrintWriter(socket.getOutputStream());otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,an
4、dDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmis
5、sions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersandout.println(commond);out.flush();}catch(UnknownHostExceptione){}catch(IOExceptione){}}}如果是采用Socket发送文件,则可以通过OutputStream将ByteArrayInputStream数据流读入,而文件数据流则
6、转换为ByteArrayOutputStream。如果需要在前面添加文字,同样也需要转换为byte,然后写入OutputStream。同样也可以通过定义一个线程类发送文件,如下:/**发送文件线程*/classMySendFileThreadextendsThread{privateStringusername;privateStringipname;privateintport;privatebytebyteBuffer[]=newbyte[1024];privateOutputStreamoutsocket;priva
7、teByteArrayOutputStreammyoutputstream;publicMySendFileThread(ByteArrayOutputStreammyoutputstream,Stringusername,Stringipname,intport){this.myoutputstream=myoutputstream;this.username=username;this.ipname=ipname;this.port=port;try{myoutputstream.close();}catch(IOEx
8、ceptione){e.printStackTrace();}}publicvoidrun(){try{//将图像数据通过Socket发送出去SockettempSocket=newSocket(ipname,port);outsocket=tempSocket.getOutputStream();//
此文档下载收益归作者所有